我目前正在开发一款具有UITableView的应用程序,其中包含一个包含UITextField的自定义单元格。我遇到的问题是,在用户向文本字段输入数字之后,在滚动时,tableView重新使用该单元格,并且在新单元格中初始化用户的先前输入。例如,如果我将数字7放在顶部单元格的文本字段中,当我滚动时,最新的单元格中已经有一个7。我想知道如何解决这个问题?谢谢你的帮助。
编辑:由于我的问题不清楚,我基本上需要一种方法让我的UITableViewCell能够#34;谈话"到我的UITableViewController中的模型,以便当用户完成单元格中的UITextField编辑时,我可以将输入保存到视图控制器中的数组。再次感谢
答案 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()!
}