3

UITableViewCell当我失去可见的矩形时,我需要释放一些资源。prepareForReuseUITableViewCell需要重用时发送消息,但我需要另一个......我有UITableViewCell子类,并且可以覆盖一些消息......

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

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

4

4 回答 4

2

当单元格被隐藏时,它会从UITableView. 因此,您可以在UITableViewCell派生类方法中覆盖willMoveToSuperview

- (void)willMoveToSuperview:(UIView *)newSuperview
{
    [super willMoveToSuperview:newSuperview];
    NSLog(@"%p willMoveToSuperview: %p", self, newSuperview);
    if(newSuperview == nil) {
        // release some resources here
    }
}
于 2012-09-29T14:25:43.440 回答
1

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

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

于 2012-09-29T14:51:28.670 回答
1

UITableView继承自UIScrollView

因此,一种可能的方法应该是实现该scrollViewDidScroll方法并检查那里UITableViewCell是可见的。

这也应该有帮助: 检查 UITableViewCell 是否完全可见的最佳方法

于 2012-12-01T09:17:42.567 回答
0

添加一个 else 解决了我的问题。我在哪里重置了对单元格所做的任何更改。

if (! self.cell) {
self.cell = [[LanguageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
self.cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{ 
self.cell.checkImage.image = NO;

}
于 2014-01-22T05:23:26.550 回答