ios - 已查看 tableviewcell 并基于它运行函数的次数

标签 ios uitableview swift3 uicollectionviewcell

我想获取表格 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/

相关文章:

ios - Swift 3 iOS - 与 AVAudioPlayer 同步暂停

ios - iOS 上的自定义字体始终使用 'regular' 样式

ios - Fabric 无法下载设置 Error Domain=FABNetworkError Code=-5

ios - 从 UITableViewCell 清除 Firebase 观察结果

ios - 我如何在同一个 xib 中使用自定义 UITableViewCell 和 UITableView

从 void 函数返回值时,Swift 3 编译器显示错误消息

ios - 如何根据屏幕尺寸更改 icarousel 半径?

iphone - 使用 SBJSON 解析 JSON 字符串时出现内存泄漏

iOS 和 Xcode : custom frameworks link error, undefined symbol

ios - UITableViewCell 和 userInteractionEnabled 的奇怪 iOS 错误