UITableViewCell:了解生命周期

时间:2015-04-07 14:25:55

标签: ios objective-c iphone uitableview

我有一个带有UITableView的ViewController,其中包含自定义UITableViewCell子类。

我正在处理的项目基于Master / Detail视图控制器模板(来自XCode 6的模板)。

我注意到的事情:

  • 当我回到主视图时,单元格的 dealloc方法 未被调用
  • 当我从主视图到详细视图(表格所在的位置)时,将调用nib方法的唤醒,然后调用dealloc方法。我不明白这一点。为什么在从nib唤醒后调用dealloc方法?

这是我观察到的当前生命周期:

  • 一旦调用了表重载方法,它会从自定义单元格的nib触发唤醒,然后调用dealloc方法(为什么不在之前?)

我在UITableViewCell的子类的两个方法上添加了一个NSLog来观察它。

编辑:我的问题是我在自定义单元格中有一个UISlider。当dealloc get被调用时,更新的滑块值就在那里(例如10),但在UI上它确实显示了通过界面构建​​器设置的初始值(例如说1)。我假设在调用dealloc后再次设置(恢复)默认值。有没有办法避免这种情况?

1 个答案:

答案 0 :(得分:0)

UIKit处理dealloc的方式是完全不透明的;我怀疑你会发现很多人已经看到它的实现,并愿意向你展示。因为我们没有很好的方法来了解引擎盖下究竟发生了什么,所以很难判断你所看到的是正常行为还是奇怪的行为。话虽这么说,有一些方法可以用来配置单元格,因为它将被显示以适当地设置滑块的值。根据我的经验,最好的方法是在cellForRowAtIndexPath中设置滑块的值。在tableViewController调用dequeueReusableCellWithIdentifier:forIndexPath之后,在UITableViewCell子类上公开一个方法,根据数据源设置滑块的值。如果在此处设置了滑块的值后,它仍然默认为故事板上的值,那么某些内容肯定无法正常工作,我们需要查看更多代码以确定它的位置&#39 ;出错了。