我有一个自定义的UITableViewCell,其中有一个包含多个子视图的UIView。根据具体情况,我隐藏了一些视图,并更新了约束,以便父UIView仍然位于我的UITableViewCell中。UITableViewCell - 限制只在刷新后更新
我的问题是,由于细胞的重复使用,只有在没有直接显示细胞的情况下(如果细胞不是表中第一个细胞)。在这种情况下,当我向下滚动,然后向上滚动时,它会再次运行。图片将帮助我解释这一点:
这是第一次加载UITableView时显示的内容。第一个单元格是一个包含所有信息的常规单元格,第二个单元格是隐藏了第一个元素的单元格。
这是当我向下滚动会发生什么,然后再回来了。
正如你所看到的,这正是我想要的。约束已被正确更新,但只有当细胞从可见屏幕消失后才再次出现。
[reviewsAndPriceView setNeedsUpdateConstraints];
[reviewsAndPriceView setNeedsLayout];
[reviewsAndPriceView layoutIfNeeded];
[self updateConstraints];
[self setNeedsUpdateConstraints];
[self setNeedsLayout];
[self layoutIfNeeded];
和各种变化,但它不起作用。有什么办法实现这一点?
那么我应该在哪里重置所有约束?在cellForIndexPath的一开始?我试过这样做,但它不会改变任何东西。 –
@bloemy在这行之后:'cell = [tableView dequeCellWith .....];' – Dalvik
这似乎并没有解决它。所以在生成单元格之后,我应该将所有约束条件重置为其原始值,然后将其更改?奇怪的是,重置它们也不会改变任何东西。 –