如何确定dequeueReusableCellWithIdentifier返回的单元格是否在iOS 6中重用?

我正在向cellForRowIndexPath中的单元格添加项目(例如手势识别器,子视图).如果重复使用单元格(大概是),我不想添加这些,所以有没有办法轻松判断单元格是新的还是被重用?

单元原型在故事板中定义.

我没有为单元格使用自定义子类(看起来像是矫枉过正).我正在使用单元格标记来识别子视图,因此无法使用它.

我可以使用iOS 6之前的方法,但肯定有更好的方法来做这么简单的事情吗?

我在网上找不到任何东西,所以害怕我可能会对某些东西感到困惑 – 但搜索起来很困难.

解决方法

解决这个问题的最简单方法是检查是否存在需要添加内容.

因此,假设您的单元格需要具有标记42的子视图(如果它尚未存在).

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    UIView *subview = [cell viewWithTag:42];
    if (!subview) {
       ... Set up the new cell
    }
    else {
       ... Reuse the cell
    }
    return cell;
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...