Swift - UITableViewCell,自定义类和原型在第4个单元格后重复

时间:2016-09-13 01:43:31

标签: ios swift uitableview

在我的应用程序中,我有一个UITableView,当用户点击"添加"时会动态创建新的单元格。按钮。我的单元格有几个用于输入用户的字段。但是,在创建第四个单元格后,该单元格包含在第一个单元格中添加的输入的副本。例如,假设每个单元格都有一个文本域

   FirstCell.textfield.text = 0 <--- manually assigned
   SecondCell.textfield.text = 1 <--- ..
   ThirdCell.textfield.text = 2 <---- ..
   FourthCell.textfield.text = 0 <--- automatically assigned
   FifthCell.textfield.text = 1 <--- automatically assigned

经过一番挖掘后,我相信这是因为细胞使用重用标识符出列,并且细胞被重复使用。如何从同一原型创建多个单元格,但不自动保存上一个单元格中手动指定的值?

更新

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:        NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("MyCustomCell", forIndexPath: indexPath) as! CustonUITableViewCellClass            
    cellB.delegate = self
    return cell
}

我尝试根据indexPath.row在此函数中分配每个单元格的UI元素,但它似乎并没有起作用。在我添加4行后开始滚动之前它一直正常工作,第一行中的单元格将返回indexPath.row = 4,并且第一行中的所有UI元素将被分配给第四行输入的值。

1 个答案:

答案 0 :(得分:0)

正如你所说,你的细胞正在被重复使用,这就是你体验这种奇怪行为的原因。您需要保留每个单元格的指定值,并在每次单元格在cellForRowAtIndexPath中重复使用时清理/设置每个单元格。

由于你有一个textField,你可以使用委托来响应它的文本被更改并将该值保存在一个数组中,然后每次重用一个单元格时查找该值并进行设置。