【问题标题】:The Amount of times a tableviewcell has been viewed and run a function based on it已查看 tableviewcell 并基于它运行函数的次数
【发布时间】:2018-01-30 01:02:21
【问题描述】:

我想获取 tableview 中的单元格完全在视图中时被查看的次数。只有当它完全在视图中时才会发生这种情况,顶部和底部单元格的小部分不应该计算在内。

在经过一定时间(~3秒)后,它应该会触发打印“hello”的功能。

我尝试创建一个计时器并在willDisplay 方法中安排它,并在didEndDisplayingCell 方法中使其无效。它以某种方式考虑了视图中未完全显示的单元格。

还尝试了tableView.visibleCells 并在tableView.indexPathsForVisibleRows 中迭代单元格,但没有任何帮助。

对此的任何帮助将不胜感激。 干杯!

【问题讨论】:

    标签: ios uitableview swift3 uicollectionviewcell


    【解决方案1】:

    虽然您想跟踪单元格显示的时间(以及显示的次数),但实际上并不希望将这些数字保留在您的自定义(子类)UITableViewCell 中,因为这些单元格会当它们在屏幕上和屏幕外滚动时,可以非常快速地回收和重复使用。

    无论您的数据源对象是什么,您都应该向它添加一个(或两个)属性以跟踪该对象何时显示在单元格中(即“var displayCount : Int”属性?),您可以启动一个@ 987654321@(或NSTimer)在显示“Hello”消息之前计算 X 秒。

    您可以通过in the answers to this related question 找到的方法检测单元格是否完全可见,此时您可以启动Timer

    要检测单元格何时滚动到屏幕外(以便您可以增加显示计数和/或取消计时器),use the delegate method didEndDisplayingCell

    【讨论】:

    • 嗯,这正是我尝试过的。但是当滚动该行时,它不会刷新计数器,尽管我已经明确地重置了它。它只是将先前的值保留在内存中并将其分配给总视图。
    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 2010-12-19
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多