我有一個自定義的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
這似乎並沒有解決它。所以在生成單元格之後,我應該將所有約束條件重置爲其原始值,然後將其更改?奇怪的是,重置它們也不會改變任何東西。 –