Swift - 当uitableview重用单元格时,用户输入会混淆吗?

时间:2015-09-01 19:56:43

标签: ios swift uitableview

我目前正在开发一款具有UITableView的应用程序,其中包含一个包含UITextField的自定义单元格。我遇到的问题是,在用户向文本字段输入数字之后,在滚动时,tableView重新使用该单元格,并且在新单元格中初始化用户的先前输入。例如,如果我将数字7放在顶部单元格的文本字段中,当我滚动时,最新的单元格中已经有一个7。我想知道如何解决这个问题?谢谢你的帮助。

编辑:由于我的问题不清楚,我基本上需要一种方法让我的UITableViewCell能够#34;谈话"到我的UITableViewController中的模型,以便当用户完成单元格中的UITextField编辑时,我可以将输入保存到视图控制器中的数组。再次感谢

2 个答案:

答案 0 :(得分:1)

覆盖您的单元格子类中的nil

在该方法中,将文字设置为super.prepareForReuse,然后调用import Ember from 'ember'; export default Ember.Route.extend({ setupController(controller, model) { if (!model) { return controller.set('model', this.store.find('todo-list', model.id)); } if (!model._internalModel || !model._internalModel._relationships || !model._internalModel._relationships.initializedRelationships ) { return controller.set('model', this.store.fetchById('todo-list', model.id)); } var relationships = model._internalModel._relationships.initializedRelationships; if (relationships.groups.canonicalState[0].dataHasInitialized) { return; } return controller.set('model', this.store.fetchById('todo-list', model.id)); } });

答案 1 :(得分:1)

快速解决方法是创建一个整数数组来表示表中的数字。 然后,在cellForRowAtIndexPath方法中,只需执行类似

的操作
cell.textField.text = numberArray[indexPath.row]

您现在需要将文本字段数据实际保存到此数组中,但在同一方法中添加

cell.textField.addTarget(self, action: "onTextChanged:", forControlEvents: UIControlEvents.EditingChanged)

一样创建,, onTextChanged''方法
func onTextChanged(sender: UITextField) {
    let cell = sender.superview! as! UITableViewCell
    let indexPath = self.tableView.indexPathForCell(cell)!
    numberArray[indexPath.row] = sender.text.toInt()!
}