【发布时间】:2011-02-09 15:04:04
【问题描述】:
我有一个包含 UITableView 的 ViewController,其中的单元格是通过自定义子视图创建的(这样每个单元格都会有一个标签和文本字段)。子视图包括在 textFieldDidBeginEditing、textFieldDidEndEditing 等上触发的 TextField 委托方法。UITableView 缓存可见的单元格,并在单元格不再可见时销毁它们。我遇到的问题是,当用户点击单元格中的 TextField 然后滚动表格以使正在“编辑”的单元格不在视野中,然后点击新单元格进行编辑时,原始单元格的 textFieldDidEndEditing 委托方法是调用,导致“respondsToSelector:]: message sent to deallocated instance”错误,因为当 UITableView 滚动出可见区域时,原始/第一个 TextField 已被销毁。
之前有没有人处理过这个问题并找到了解决方案,这样我就可以保留我的 textFieldDidEndEditing 方法来正确处理用户输入的数据,而不会破坏现在不可见的单元格?
编辑:我刚刚在 UITableView 类参考文档中找到了这一点:“避免重新布局内容。当重用具有自定义子视图的单元格时,请避免在每次表格视图请求单元格时布置这些子视图。布置子视图一次,何时创建单元格。”
我认为这是我问题的根源。但我不确定如何遵循这个建议。帮助...
【问题讨论】:
-
您最终找到解决方案了吗?
-
我发现在我的情况下,只是没有在 nib 中指定重用标识符导致单元格的释放,ios6 可以原谅这一点,但 ios7 不会
标签: uitableview