如何处理UITableViewCell变得不可见?

时间:2012-09-29 14:18:06

标签: ios uitableview

UITableViewCell超出可见矩形时,我需要释放一些资源。当prepareForReuse需要重用时会发送UITableViewCell消息,但我还需要另一个消息......我有UITableViewCell个子类,可以覆盖一些消息......

这正是我所需要的:tableView:didEndDisplayingCell:forRowAtIndexPath:

但这是iOS6 +唯一的解决方案。我需要iOS4.3 +解决方案。

4 个答案:

答案 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;

}