在uitableviewcell的layoutSubviews中,有像
这样的逻辑switch(enum_instance){ }
enum_instance已从某个地方更改,例如在一个计时器中更改,然后setNeedLayout更改为触发layoutSubviews
但layoutSubviews中的enum_instance不会更新。这个错误吗?或者我做错了什么?
谢谢,
答案 0 :(得分:0)
这是因为UITableViewCell
被回收了。当tableView
被调用时,滚动dequeueReusableCellWithIdentifier:
将会随机播放单元格。这意味着我会在错误的单元格上调用layoutIfNeeded
(在滚动之后,该单元格可能被分配给另一个indexPath
)。只有tableView:cellForRowAtIndexPath:
才能设置单元属性的安全位置。
更简单的方法是重新计算tableView:heightForRowAtIndexPath:
和tableView:cellForRowAtIndexPath:
中的单元格。可以通过调用reloadRowsAtIndexPaths:withRowAnimation:
为要重绘的单元格提供indexPath
数组来重新触发此方法。