我有一个UITableView
,其中包含需要观察者的单元格中的对象。当我导航到另一个视图时,需要删除这些观察者。调用[tableView visibleCells]
是否可以获取所有当前加载的单元格?
我的细胞高度为3-400px,每次只能重复使用3-4个不同的细胞。在任何时间点,可能会看到两个单元格,或者可能看到三个单元格。当我致电visibleCells
时,我会在屏幕上看到实际的那些,或者我是否会收到所有已经通过cellForRowAtIndexPath
但尚未出列的单元格重新使用?
文档仅指出Returns the table cells that are visible in the receiver.
... Return Value: An array containing UITableViewCell objects, each representing a visible cell in the receiving table view.
它们是否意味着可见,就像在屏幕上当前显示的实际一样?或者可见,因为它对于tableView是可见的,但不一定是用户(I.E未在屏幕上显示)?
答案 0 :(得分:2)
假设visibleCells
使用indexPathsForVisibleRows
然后它意味着可见(如在屏幕上!)如果没有,那仍然是什么意思BTW:D
没有公开的方法来获取所有LOADED单元。什么是hackisch但是works(!)是枚举tableView的子视图;)
答案 1 :(得分:1)
1)visibleCells
只返回用户可见的那些,并且可能还有其他已经实例化并且位于'队列'
2)addObserver:forKeyPath:options:context:
不会保留观察者,并且在被取消分配之前需要您removeObserver
。在您的情况下,我建议您在自定义removeObserver
UITableViewCell