2017-08-21 23 views
0

我想獲取tableview中的一個單元格完全處於視圖中的次數。只有當它完全處於視圖中時纔會發生,頂部和底部單元的小部分不應該計數。已經查看tableviewcell的次數並基於它運行一個函數

經過一段時間(〜3秒)後,它應該觸發打印「hello」的功能。

我試着創建一個計時器並在willDisplay方法中調度它,並在didEndDisplayingCell方法中使其失效。它以某種方式考慮了不完全在視野中的細胞。

也試過tableView.visibleCells並在tableView.indexPathsForVisibleRows迭代單元格,但沒有任何幫助。

任何關於此的幫助將不勝感激。 乾杯!

回答

1

雖然您想要跟蹤單元格顯示的時間(以及顯示的次數),但您實際上並不想將這些數字保留在自定義(子類)的UITableViewCell中,因爲這些單元格當它們在屏幕上和屏幕上滾動時,可以非常快速地進行回收和重用。

無論您的數據源對象是什麼,您都應該添加一個屬性(或兩個)來跟蹤對象何時顯示在單元格中(即「var displayCount : Int」屬性?),並且您可以啓動一個Timer(或NSTimer)在顯示「Hello」消息之前計算X秒。

您可以通過找到的方法in the answers to this related question來檢測單元格是否完全可見,這是您何時可以啓動Timer

要檢測何時單元格滾動離屏(因此您可以增加顯示計數和/或取消計時器),use the delegate method didEndDisplayingCell

+0

那麼,那正是我所嘗試過的。但是當滾動瀏覽行時,它不會刷新計數器,儘管我明確地重置了它。它只保留內存中的前一個值並將其分配給全部視圖。 –

相關問題