【问题标题】:Difference in UITableViewCell willMoveToSuperview: behavior between iOS 5 and iOS 6UITableViewCell willMoveToSuperview 的区别:iOS 5 和 iOS 6 之间的行为
【发布时间】:2012-09-20 19:01:34
【问题描述】:

在iOS 5下,似乎每次使用或重用cell时都会调用一个UITableViewCell子类的willMoveToSuperview:方法,但在iOS 6下,似乎只有在最初创建和使用cell时才调用它,不是当一个单元被重用时。任何人都可以验证这种差异吗?这是一个错误吗?

我应该使用什么方法在 UITableViewCell 子类中进行单元格设置,当单元格在 iOS 5 和 iOS 6 中重复使用时将被调用?

【问题讨论】:

  • 已验证。 didMoveToSuperview 也是如此:。弄乱我的一些动画代码。有谁知道这是一个错误,还是有意为之?
  • 也将 willMoveToWindow 添加到其中。
  • 同样适用于 UICollectionViewCell。

标签: ios5 uitableview ios6


【解决方案1】:

我在使用 UICollectionView 时遇到了同样的问题。看来您必须在用于显示的视图中实现 prepareForReuse 方法(例如 UITableViewCell 或 UICollectionViewCell 类型)。但是,如果您在 iOS6 中使用带有 registerClass:forCellWithReuseIdentifier: 的注册类的新 dequeueReusableCellWithReuseIdentifier:forIndexPath:,即使这是第一次创建单元格(不仅仅是在重用时),也会调用它。

参考:UITableViewCell Class - prepareForReuse

【讨论】:

    【解决方案2】:

    1。如何知道一个单元格是否从 tableview 中删除?

    使用此方法做某事,例如清理、停止计时器或其他...

    - (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    

    2。如何知道一个单元格是否要显示

    • (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

    3。如何知道一个单元格是否要重用

    覆盖此方法

    UITableViewCell:
     - (void)prepareForReuse();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2016-06-14
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多