簡體   English   中英

更改UITableView中一些選定的表格視圖單元格文本的顏色

[英]Changing the color of a few selected table view cells text in UITableView

我有一個包含8個單元格的表格視圖。 每個都包含一個標簽。 對於最后4個單元格,我希望標簽的text屬性具有藍色。 對於前四個單元格,我希望它們具有黑色。

我使用以下代碼在cellForRowAt indexPath中將文本顏色設置為藍色:

if indexPath.row > 4 {
    cell.label.textColor = UIColor.blue
}

這會將顏色更改為藍色,但是當用戶向下滾動然后再次向上滾動時,前兩個單元格標簽也具有藍色,因為單元已被重用。

我該如何解決? 謝謝。

由於出隊問題或單元重用問題,您將不得不在cellForRow方法中添加其他部分。

cell.label.textColor = indexPath.row > 4 ? .blue : .black

注意:始終記得將else部分添加到cellForRow方法中,否則它的行為很奇怪。

首先,處於當前狀態的代碼會將索引大於4的所有單元格的顏色設置為blue ,而不僅僅是最后4個單元格。 您需要更改條件。

然后,您需要添加else語句來處理其他不滿足條件的單元格顏色。 這是因為單元被重用,所以它們總是需要設置顏色。

因此,您的代碼應如下所示:

if indexPath.row > numberOfRows - 4 {
    cell.label.textColor = .blue
} else {
    cell.label.textColor = .black
}

或如@jarvis所述,您可以使用三元運算符使您的代碼更緊湊,如下所示:

cell.label.textColor = indexPath.row > numberOfRows - 4 ? .blue : .black

numberOfRows是表視圖具有的行數。

您還需要設置其他條件,以便它不會改變

if indexPath.row > 4 {
    cell.label.textColor = UIColor.blue
}
else {
    cell.label.textColor = UIColor.black
}

這是因為確實確實在重復使用該單元。 為了解決這個問題,您需要一種邏輯來處理不滿足條件的單元格/行indexPath.row > 4 :)

這是因為確實確實在重復使用該單元。

確保每次在UITableViewUICollectionView else使用else條件,這樣在展開時值不會互換。

您可以按照以下兩種方法進行操作,以使顏色不會互換。

cell.label.textColor = indexPath.row > 4 ? .blue : .black

要么

if indexPath.row > 4 {
    cell.label.textColor = UIColor.blue
}
else {
    cell.label.textColor = UIColor.black
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM