2012-06-21 17 views
29

UIButtonには、「再生」と「一時停止」という2つのステータスが必要です。つまり、初めて「再生」と表示され、ユーザーがクリックするたびに「再生」と「一時停止」を切り替える必要があります。iOSでUIButtonのtextLabelプロパティをプログラムで変更するにはどうすればよいですか?

コンテンツは再生され、正しく一時停止されたコントローラ自体を作成することができましたが、UIButton Text Labelテキストを変更することはできません。

私が使用します。

myButton.titleLabel.text = @"Play"; 

myButton.titleLabel.text = @"Pause"; 

それは働いていません。テキストは変化していません。私も[myButton.titleLabel setText:@ "Pause"]しようとしましたが、うまくいきません。

どうすれば設定できますか?

答えて

66

それは次のようになります。

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

はあなたにもstateを渡す必要があります。他のstatehereを確認することができます。

あなたは、このような何か行うことができます。

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 
[myButton setTitle:@"Stop" forState:UIControlStateSelected]; 
1

をそして、あなたは、ページの読み込みにそれをロードして、ローカライズされた言語をサポートする場合:

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    if (self.flagToChangeLabel){ 
     NSString* newBtnTitle = NSLocalizedString(@"LOCALIZED_KEY", nil); 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateNormal]; 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateSelected]; 
    } 
} 
2

私は、これは多少の外にあることが判明属性付き文字列が追加されてからの日付。ストーリーボードに割り当てられたボタンのタイトルは、属性付きの文字列です。アトリビュートタイトルはNSStringタイトルよりも優先されるので、タイトルとして単純な文字列を使用する場合は、アトリビュートタイトルを最初に削除する必要があります。私は以下のようにしましたが、よりよい方法があるかもしれません。もちろん、あなたの新しいタイトルを帰属する文字列にすることもできます。

[myButton setAttributedTitle: nil  forState: 0xffff]; 
[myButton   setTitle: @"Play" forState: UIControlStateNormal]; 
関連する問題