- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
一旦单元格在屏幕上不再可见,我就需要得到通知。
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/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!