2011-06-23 174 views
4

TL; DR - 我的問題確實是:如何將UIButton的標題設置爲空字符串,或者在它已被分配了以前的標題後爲null。如何將UIButton標題設置爲空或空字符串

我有一個接受生成的字符串,基於從一個NSString變量,因爲它是使用下面的標題文本的UIButton:

NSString *MyStringVariable = @"HELLO"; 
... 
[myButton setTitle:MyStringVariable forState:UIControlStateNormal]; 

對於這個問題的緣故,讓我們只是假設我有「HELLO 「在我的NSString變量上設置。然後,這使我的UIButton有標題「HELLO」,顯然...

我再有另一個按鈕,從UIButton的刪除這個稱號,就像這樣:

[myButton setTitle:@"" forState:UIControlStateNormal]; 

哪個隱藏的UIButton的標題(即它現在看起來像一個空的UIButton),但經過進一步檢查,標題確實存在。如果我以下內容添加到我的UIViewController:

- (void)viewWillAppear:(BOOL)animated{ 
    NSLog(@"Title: %@", myButton.titleLabel.text); 
} 

和導航並從這個觀點來回回,標題繼續得到記錄在控制檯,即使我已經將文本設置爲@「」。

我曾嘗試以下方法,使標題真正走開:

[myButton setTitle:@"" forState:UIControlStateNormal]; 
[myButton setTitle:NULL forState:UIControlStateNormal]; 
[myButton setTitle:nil forState:UIControlStateNormal]; 
myButton.titleLabel.text = @""; 

奇怪的是,如果我設置標題爲@」「(中間有空格):

[myButton setTitle:@" " forState:UIControlStateNormal]; 

標題確實正確更新,然後將空間記錄到控制檯,而不是舊標題。

我的問題確實是:如何將UIButton的標題設置爲空字符串,或者在它已被賦予先前標題後爲null。

回答

1

這聽起來像是SDK中的一個bug,創建一個bugreport

如果你確實需要一個沒有標題的按鈕,你可能必須自己創建一個按鈕。一個UIView,它的圖層被設置爲具有cornerRadius(因此被舍入),它響應用戶交互應該做到這一點。此外,請檢查three20工具包,他們可能會有一個自定義按鈕或兩個可用於節省一些時間的按鈕。

1

我認爲這與UIButton在調用setTitle:forState:時如何更新其titleLabel屬性有關。

例如,如果您嘗試通過直接訪問titleLabel.text屬性來設置按鈕的標題,則不起作用(請查看關於此的無數問題)。

如果你真的想知道發生了什麼,那麼你應該看看titleLabel.text和按鈕的當前狀態。一種方法是記錄titleLabel.text,currentTitletitleForState:,viewWillAppear,viewDidAppear,viewWillDisappearviewDidDisappear。前兩個(titleLabel.textcurrentTitle)應該重合,第三個應該是您期望的(titleForState:)。

5

我也面臨同樣的問題。我將所有州的按鈕標題設置爲@"",稍後當我檢查titlelabel.text時,它給了我以前的標題,它不是@""。所以我打印出PengOne建議的按鈕的所有可能的值,並發現屬性titleForStatecurrentTitle給出了更新/正確的值。

因此,不要檢查titleLabel.text,而要檢查currentTitletitleForState

我還沒有想出爲什麼titleLabel沒有正確更新。

0

我看到了相同的問題,但在不同的上下文中。我一直在使用NSLocalizableString更改按鈕中的文本。

看來,設置UIButton.title改變其UIButton.currentTitle但不是它的UIButton.titleLabel.text

雖然它可能沒有太大您的應用程序的差異,但事實上,titleLabel.txtcurrentTitle是不同的匝數比實現挑戰更多的是「知道」。

相關問題