我有一个 UITableViewController 子类,它的原型(prototype)单元在 Storyboard中模拟。
cellForRowAtIndexPath
委托(delegate)方法中有大量代码用于设置单元格。问题是,如果单元刚从重用池中出队,我不需要其中的大部分,因为当单元第一次出队时已经完成了。我不能在 Storyboard 中这样做,因为有些属性我只能通过编程方式访问。
当 UITableViewController 从 Storyboard 中获取原型(prototype)单元格时,它是否会调用我的 UITableViewCell 子类中的初始化程序?我尝试了 (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
但这似乎不是流程的一部分。
最佳答案
当 UITableView 实例调用 dequeueReusableTileWithIdentifier:
时,单元不会重新初始化。相反,在该调用中,出队的 UITableViewCell 将调用 -(void)prepareForReuse
。这是因为重新初始化单元的成本很高,如果我们可以提供一种更简单的方法来准备它的重用(嗯,嗯,明白了吗?)它可以节省大量的 CPU 工作。
因此,如果您使用的是自定义单元格,请覆盖 UITableViewCell prepareForReuse
。
关于iphone - 是否 dequeueReusableCellWithIdentifier : call an initializer in my UITableViewCell subclass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11056420/