2015-08-20 44 views
0

全部,UIButton選定的文本不顯示爲選定狀態

我有一個包含按鈕的UI元素。我在按鈕上設置文本,並同時選擇所選狀態。見下:

- (void)setText:(NSString *)text { 
    self.inputButton.selected = text != nil; // select the buttons if the text is not nil 
    self.cancelButton.selected = text != nil; 

    [self.inputButton setTitle:text forState:UIControlStateSelected]; 
    [self.inputButton setTitle:text forState:UIControlStateHighlighted]; 
} 

這是在視圖控制器中填寫時正常工作。

但是,當我從前一個視圖控制器傳入文本時,所選的狀態文本不會顯示。 cancelButton選擇狀態正常工作,並且inputButton狀態被認爲是選中狀態,但是,選定的狀態文本未顯示。

我不知道是不是因爲按鈕沒有重繪或什麼的?我已經嘗試了所有[self layoutnefNeed]和[self setNeedsDisplay]沒有運氣。任何人都知道發生了什麼事?

+0

當你從前一個視圖控制器傳遞過來時,你肯定'text'不是'nil'嗎? – Aaron

+0

是的。絕對不是無 – coder

回答

0

我想通了這個問題。我正在使用選定和突出顯示的狀態。出於某種奇怪的原因,這就造成了按鈕狀態可能爲5的情況。我通過不以任何方式處理UIControlStateHighlighted來解決問題。

0

你可以檢查添加下面的代碼行。

- (void)setText:(NSString *)text { 
    self.inputButton.selected = text != nil; // select the buttons if the text is not nil 
    self.cancelButton.selected = text != nil; 

    [self.inputButton setTitle:text forState:UIControlStateSelected]; 
//Start:Added line of Code 
    [self.inputButton setTitle:text forState:UIControlStateNormal]; 
//End: 
    [self.inputButton setTitle:text forState:UIControlStateHighlighted]; 
} 

感謝&問候,

阿米特

+0

但我不想更改UIControlStateNormal的文本。我有不同的文字顯示該狀態 – coder

+0

嗨,你可以分享您設置爲正常狀態的文本的代碼段。問候,阿米特 –