我UITableView
在UITextField
每个UITableViewCells
. 我的 ViewController 中有一个方法,它处理每个单元格的文本字段的“退出时结束”事件,我想要做的是用新文本更新我的模型数据。
我目前拥有的是:
- (IBAction)itemFinishedEditing:(id)sender {
[sender resignFirstResponder];
UITextField *field = sender;
UITableViewCell *cell = (UITableViewCell *) field.superview.superview.superview;
NSIndexPath *indexPath = [_tableView indexPathForCell:cell];
_list.items[indexPath.row] = field.text;
}
当然做的field.superview.superview.superview
工作,但它只是看起来很hacky。有没有更优雅的方式?如果我将标签设置为UITextField
单元indexPath.row
格的cellForRowAtIndexPath
标签,即使在插入和删除行之后,该标签也会始终正确吗?
对于那些密切关注的人,您可能会认为我的内容.superview
太多了,而对于 iOS6,您是对的。但是,在 iOS7 中,单元格的内容视图和单元格本身之间的层次结构中有一个额外的视图(NDA 阻止我详细说明)。这准确地说明了为什么做 superview 的事情有点 hacky,因为它取决于知道如何UITableViewCell
实现,并且可能会随着操作系统的更新而中断。