我有一个具有各种自定义 UITableViewCells(和单元格标识符)的 UITableView 的应用程序。
在我实现tableView:cellForRowAtIndexPath:
的方法中,我使用了 UITableView 的dequeueReusableCellWithIdentifier:
方法,它在用户滚动表格期间调用时给了我预期类型的 UITableViewCell,但是,如果我尝试在代码的其他部分检索可重用单元格,我将得到 nil结果,因此必须实例化一个新单元格。
例如,插入要显示的新对象的代码如下所示:
...
[myDataSource addObject:newObject];
...
[self.tv beginUpdates];
[self.tv insertRowsAtIndexPaths:paths withRowAnimation:rowAnimation];
[self.tv endUpdates];
...
尽管刚刚离开屏幕的单元格与我插入的类型相同(相同的单元格标识符),但这会触发tableView:cellForRowAtIndexPath:
and 在该调用上返回 nil 。dequeueReusableCellWithIdentifier:
不应该给一个可重复使用的细胞吗?就我而言,这可能会成为问题,因为我的单元格由于其复杂性而具有某种“重”的 init 方法。
提前致谢
Edit1:为了澄清,我想知道为什么表缓存中没有未使用的单元格实例返回,因为某些单元格(我插入的相同类型)刚刚退出可见?