gpt4 book ai didi

iOS - 检测 UITableViewCell 被移出可见 View ?

转载 作者:可可西里 更新时间:2023-11-01 04:16:26 25 4
gpt4 key购买 nike

一旦单元格在屏幕上不再可见,我就需要得到通知。

UITableView 已经有一个名为 tableView:didEndDisplayingCell:forRowAtIndexPath: 的委托(delegate)方法,但是这个委托(delegate)方法永远不会被调用。是的,我确实有我的 UITableView 集的委托(delegate)。

还有其他检测细胞被移除的方法吗?我需要能够在该单元格被另一项重复使用之前保存该单元格的内容(输入)。

编辑:

根据文档 tableView:didEndDisplayingCell:forRowAtIndexPath: 是 iOS 6 和更高版本的 API。有没有办法在 iOS 5 上实现这一点?

最佳答案

在 6.0 之前的 iOS 版本中,表格 View 不会发送 tableView:didEndDisplayingCell:forRowAtIndexPath: 消息。

如果您使用的是 UITableViewCell 的子类,您可以通过覆盖 didMoveToWindow 在旧版本的 iOS 上获得相同的效果:

- (void)didMoveToWindow {
if (self.window == nil) {
// I have been removed from the table view.
}
}

您可能需要为您的单元格提供一个(弱或不安全的未保留)引用返回到您的 TableView 委托(delegate),以便您可以向委托(delegate)发送消息。

但是,对于所有版本的 iOS,您不能仅依赖于 didMoveToWindow。在 iOS 6 之前,表格 View 总是在重用之前将表格 View 单元格作为 subview 删除,因此单元格在重用之前总是会收到 didMoveToWindow。但是,从 iOS 6 开始,表格 View 可以重用单元格, 无需将其作为 subview 移除。 TableView 将简单地更改单元格的框架以将其移动到新位置。这意味着从 iOS 6 开始,一个单元格在被重用之前不会总是接收到didMoveToWindow

所以你应该在你的单元格子类中实现 didMoveToWindow ,在你的委托(delegate)中实现 tableView:didEndDisplayingCell:forRowAtIndexPath: ,并确保在两者都被调用时它能正常工作,或者如果只调用一个。

关于iOS - 检测 UITableViewCell 被移出可见 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com