簡體   English   中英

如何在突出顯示的狀態下更改UITableViewCell文本顏色?

[英]How can I change a UITableViewCell text color in it's highlighted state?

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
    if (selected) {
        companyLabel.textColor = [UIColor whiteColor];
        priceLabel.textColor = [UIColor whiteColor];
        changeLabel.textColor = [UIColor whiteColor];
        symbolLabel.textColor = [UIColor whiteColor];
    }
    else
    {
        companyLabel.textColor = [UIColor blackColor];
        priceLabel.textColor = [UIColor blackColor];
        symbolLabel.textColor = [UIColor blackColor];

        if([changeLabel.text doubleValue] < 0)
        {
           changeLabel.textColor = [UIColor colorWithRed:239.0/255.0 green:16.0/255.0 blue:52.0/255.0 alpha:1.0];
        }
        else if([changeLabel.text doubleValue] > 0)
        {
           changeLabel.textColor = [UIColor colorWithRed:77.0/255.0 green:161.0/255.0 blue:0.0 alpha:1.0];
        }
    }

}

直到下一個視圖被推入導航堆棧之后,我的文本才會變為白色。

我希望它變成白色,即使用戶點擊+持有一個單元格。

UILabel有一個highlightedTextColor屬性。 當像UITableViewCell這樣的視圖進入其突出顯示狀態時,所有子視圖(包括您的標簽)都應自動更改為使用其突出顯示的屬性。 如果它仍然無法正常工作,那么還有一個用於禁用該功能的字段,您可能需要檢查該功能。

您不希望在任何tableview委托方法中執行此操作。 您必須將突出顯示的文本顏色設置為給定的UILabel

[myLabel setHighlightedTextColor:[UIColor whiteColor]];

這會奏效。 你也不想處理甚至沒有突出的狀態。

干杯!

我將使用UITableViewDelegate方法來實現這一目標。 UILabel可以設置顏色,所以為什么不使用didSelectRowAtIndex和didDeselectRowAtIndex。 在didSelectRowAtIndex中,將標簽設置為所需的顏色,然后在didDeselectRowAtIndex中將標簽設置回黑色。

您可以用UIButton替換標簽並對touchDown事件進行操作嗎?

Button仍然具有titleLabel屬性,因此它可以顯示文本,並且您將能夠更輕松地操作觸摸。 雖然我看不到你的代碼,所以我不知道你對這些標簽做了什么。

暫無
暫無

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

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