如何检测自定义表格视图单元格何时离开屏幕?

Posted

技术标签:

【中文标题】如何检测自定义表格视图单元格何时离开屏幕?【英文标题】:How to detect when a custom tableview cell goes off the screen? 【发布时间】:2017-06-08 11:34:12 【问题描述】:

在我的应用中,我有一个自定义 tableViewCell,

我还有一个带有 tableView 的 View Controller,我在其中显示自定义 tableViewCells。

是否有一种方法(ViewController 方法或 TableViewCell 方法)在 tableViewCell 离开屏幕时触发,我需要在其中为我的单元格进行一些核心数据更新。

(我需要知道方法,因为当它离开屏幕时,我需要在我的 tableViewCell 中更新 Timer() 的 Core Data 值。)

【问题讨论】:

为什么不只在可见单元格中更新? Core Data 与表格视图的视觉状态紧密耦合似乎是一个有缺陷的架构。 【参考方案1】:

以下 tableview 委托用于检测单元格结束显示 :: tableView:didEndDisplayingCell:forRowAtIndexPath:

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)

当单元格从表格视图中移除或单元格结束其显示时触发上述方法。

【讨论】:

【参考方案2】:

你可以使用 UITableView 的tableView:didEndDisplayingCell:forRowAtIndexPath:deleaget 方法

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) 

    

这里请注意,当你重新加载tableview或cell时,正在被移除的cell会触发这个方法。所以在这个方法中实现额外的逻辑来处理这种情况。

【讨论】:

【参考方案3】:

有一个tableView(_:didEndDisplaying:forRowAt:) 委托方法: https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614870-tableview

【讨论】:

Use this method to detect when a cell is removed from a table view, as opposed to monitoring the view itself to see when it appears or disappears. 看起来这可能会做不同的事情。

以上是关于如何检测自定义表格视图单元格何时离开屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

制作自定义的动态表格视图单元格

如何动态更改自定义单元格的表格视图单元格的高度?

如何确定自定义 UICollectionViewCell 何时在屏幕上显示为 100%

自定义 UITableViewCell 的布局何时完成?

在自定义表格单元格内检测多个 UI 视图的点击/触摸的理想方法是啥?

如何在Iphone +上仅将表格视图自定义单元格的左上角和右上角半径转角