我有一个UITableView,其中有需要观察的单元格中的对象。当我导航到另一个视图时,需要移除这些观察者。给[tableView visibleCells]打个电话会让我得到所有当前加载的单元吗?
我的细胞高度为3-400 My,因此每次只能重复使用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是可见的,但不一定是对用户(即没有在屏幕上表示)?
发布于 2014-08-26 15:29:29
假设visibleCells使用indexPathsForVisibleRows,那么它就意味着可见(就像在屏幕上一样!)如果没有,那仍然是BTW :D的意思。
恐怕没有公开的方法来获取所有加载的单元格。什么是hackisch但有效的(!)是枚举tableView的子视图;)
发布于 2014-08-28 10:36:37
1) visibleCells只返回用户可以看到的内容,并且可能还有其他已实例化并位于“队列”中的用户。
2) addObserver:forKeyPath:options:context:不保留观察者,并要求您在它被释放之前保留removeObserver。在您的情况下,我建议您在自定义removeObserver的dealloc方法中调用UITableViewCell。
https://stackoverflow.com/questions/25509592
复制相似问题