私は、スライダとその隣にtextfield
というプロトタイプcells
を持つUITableViewを持っています。スライダの値が変更されると、textview
の値も変更されます。テーブルのサイズが大きくなる場合を除いては正常に動作しますが、スクロールダウン時に新たに生成されたcell
はすでに最初のセルの値を示しています。私はこれがdequeueReusableCellWithIdentifier
の機能と関係があり、cells
が再利用されていることを認識しています。どのようにこれを回避することができますか?UITableViewのカスタムセルでスライダを使用
これはコードです:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("infoCell") as! InfoCell
cell.dressLabel.text = inputArrayFortableView[indexPath.row]
cell.uiSlider.maximumValue = 100
cell.uiSlider.minimumValue = 0
cell.uiSlider.continuous = true
cell.uiSlider.addTarget(cell, action: #selector(cell.uiSliderSetValue), forControlEvents: .ValueChanged)
if(cell.DressTextField.text != "")
{
cell.uiSlider.setValue(Float(cell.DressTextField.text!)!, animated: true)
}
print("outside uisliderSetvalue")
cell.uiSlider.tag = indexPath.row
print(cell.uiSlider.tag)
return cell
}
私はスクリーンショットを添付しています。下にスクロールすると、新しいセルは最初のセルと同じ値を持ち、生成された2番目のセルは2番目のセルと同じ値を持ちます。
'cellForRowAtIndexPath'のコードを表示して、わかりやすく解説します。 –