0

在uitableviewcell的layoutSubviews中,有类似的逻辑

switch(enum_instance){ }

enum_instance 从某个地方更改,例如在一个计时器中,然后 setNeedLayout 触发 layoutSubviews

但是 layoutSubviews 中的 enum_instance 不会更新。这是错误吗?还是我做错了什么?

谢谢,

4

1 回答 1

0

发生这种情况是因为UITableViewCells 被回收。滚动tableView将在dequeueReusableCellWithIdentifier:调用时随机播放单元格。这意味着layoutIfNeeded我在错误的单元格上被调用(滚动后,该单元格可能被分配给另一个indexPath)。设置单元属性的唯一安全位置是tableView:cellForRowAtIndexPath:应配置单元的位置。

更简单的方法是重新计算 和 内的单元tableView:heightForRowAtIndexPath:tableView:cellForRowAtIndexPath:。可以通过为要重绘的单元格调用reloadRowsAtIndexPaths:withRowAnimation:提供数组来重新触发此方法。indexPath

于 2015-04-30T08:22:13.247 回答