当UITableViewCell
超出可见矩形时,我需要释放一些资源。当prepareForReuse
需要重用时会发送UITableViewCell
消息,但我还需要另一个消息......我有UITableViewCell
个子类,可以覆盖一些消息......
这正是我所需要的:tableView:didEndDisplayingCell:forRowAtIndexPath:
但这是iOS6 +唯一的解决方案。我需要iOS4.3 +解决方案。
答案 0 :(得分:2)
当单元格隐藏时,它将从UITableView
中删除。因此,您可以覆盖UITableViewCell
派生类方法willMoveToSuperview
:
- (void)willMoveToSuperview:(UIView *)newSuperview
{
[super willMoveToSuperview:newSuperview];
NSLog(@"%p willMoveToSuperview: %p", self, newSuperview);
if(newSuperview == nil) {
// release some resources here
}
}
答案 1 :(得分:1)
这正是我所需要的:tableView:didEndDisplayingCell:forRowAtIndexPath:
但这是iOS6 +唯一的解决方案。我需要iOS4.3 +解决方案。
答案 2 :(得分:1)
UITableView
继承自UIScrollView
。
因此,一种可能的方法是实施scrollViewDidScroll
方法并检查哪些UITableViewCell
可见。
这也应该有所帮助: Best way to check if UITableViewCell is completely visible
答案 3 :(得分:0)
添加其他解决了我的问题。我重置了对单元格所做的任何更改。
if (! self.cell) {
self.cell = [[LanguageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
self.cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{
self.cell.checkImage.image = NO;
}