自定义UITableViewCell不正确地重新加载行

时间:2016-04-17 18:19:50

标签: ios objective-c iphone uitableview

我有一个似乎没有被问过的问题,或者至少我无法用正确的搜索词来定义我的问题。长话短说,我有一个UITableViewController,它使用三个不同的自定义原型单元格。每个单元格都具有故事板中指定的唯一重用标识符。在表中,存在给定自定义单元格的多个实例。每个原型单元包含一个UILabel(左对齐)和一个UIView控件(按钮,开关等 - 右对齐)。

我设法让细胞和功能的布局到位。我遇到的问题是当用户滚动tableView时。当一个单元格离开屏幕然后返回时,它会被不正确地渲染。或者至少它在一瞬间被正确绘制,然后UILabel的位置向上移动并且UIView控制在单元格中无处可见。当我使用reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;方法动态隐藏/显示单元格以及heightForRowAtIndexpath方法时,会发生同样的事情。正如您在the attached video中看到的那样,单元格会重新加载,但其内容的对齐方式并不正确(对于视频中的水印而言很抱歉)。

非常感谢任何帮助或建议!

2 个答案:

答案 0 :(得分:1)

尝试将您的手机电话插座重新设置为各自的“清洁”电池。州使用prepareForReuse

答案 1 :(得分:0)

发现了这个问题。每次创建单元格时都会删除单元格的约束。猜测这导致与细胞重用的一些冲突。一旦我删除了行[self removeConstrains:self.constraints],我就能够获得所需的性能,而不会让单元格“卡住”。