我想获取表格 View 中的单元格在完全位于 View 中时被查看的次数。只有当它完全在 View 中时才会发生这种情况,顶部和底部单元格的小部分不应该计算在内。
经过一定时间(~3 秒)后,它应该触发打印“hello”的函数。
我尝试创建一个计时器并在 willDisplay
方法中安排它,并在 didEndDisplayingCell
方法中使它无效。它以某种方式考虑了未完全在 View 中的单元格。
还尝试了 tableView.visibleCells
并在 tableView.indexPathsForVisibleRows
中迭代单元格,但没有任何帮助。
如有任何帮助,我们将不胜感激。 干杯!
最佳答案
虽然您想要跟踪一个单元格显示了多长时间(以及它被显示的次数),但您实际上并不想将这些数字保留在您的自定义(子类)UITableViewCell 中,因为这些单元格获得当它们在屏幕上和屏幕外滚动时,回收和重复使用非常快。
无论您的数据源对象是什么,您都应该向其添加一个(或两个)属性以跟踪对象何时显示在单元格中(即“var displayCount : Int
”属性? ),您可以启动 Timer
(或 NSTimer
)在显示“你好”消息之前计算 X 秒。
您可以通过找到的方法检测单元格是否完全可见 in the answers to this related question ,此时您可以启动 Timer
。
要检测单元格何时滚动到屏幕外(因此您可以增加显示计数和/或取消计时器),use the delegate method didEndDisplayingCell
.
关于ios - 已查看 tableviewcell 并基于它运行函数的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805830/