如何从UITableView获取所有加载的单元格?

时间:2014-08-26 15:24:51

标签: ios objective-c uitableview

我有一个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未在屏幕上显示)?

2 个答案:

答案 0 :(得分:2)

假设visibleCells使用indexPathsForVisibleRows然后它意味着可见(如在屏幕上!)如果没有,那仍然是什么意思BTW:D

没有公开的方法来获取所有LOADED单元。什么是hackisch但是works(!)是枚举tableView的子视图;)

答案 1 :(得分:1)

1)visibleCells只返回用户可见的那些,并且可能还有其他已经实例化并且位于'队列'

2)addObserver:forKeyPath:options:context:不会保留观察者,并且在被取消分配之前需要您removeObserver。在您的情况下,我建议您在自定义removeObserver

的dealloc方法中调用UITableViewCell