「Play」と「Pause」の2つのステータスを持つUIButton
があります。つまり、ユーザーが最初にそれを見ると「Play」と表示され、ユーザーがクリックするたびに「Play」と「Pause」を切り替える必要があります。
コントローラー自体を作成することができました-コンテンツは適切に再生および一時停止されます-しかし、UIButton Text Labelテキストを変更することはできません。
私が使う:
myButton.titleLabel.text = @"Play";
myButton.titleLabel.text = @"Pause";
動いていない。テキストは変更されていません。 [myButton.titleLabel setText:@ "Pause"]も試しましたが、うまくいきません。
どうすれば設定できますか?
そのはず:
[myButton setTitle:@"Play" forState:UIControlStateNormal];
state
も渡す必要があります。他のstate
の- here を確認できます。
その後、次のようなことができます。
[myButton setTitle:@"Play" forState:UIControlStateNormal];
[myButton setTitle:@"Stop" forState:UIControlStateSelected];
Swift 4
myButton.setTitle("Pause", for: .normal)
属性付き文字列が追加されたため、これはやや時代遅れであることがわかりました。ストーリーボードで割り当てられたボタンのタイトルは、属性付きの文字列です。属性付きタイトルはNSStringタイトルよりも優先されるため、タイトルとして単純な文字列を使用する場合は、最初に属性付きタイトルを削除する必要があります。より良い方法があるかもしれませんが、私は以下のようにしました。もちろん、新しいタイトルを属性付き文字列にすることもできます。
[myButton setAttributedTitle: nil forState: 0xffff];
[myButton setTitle: @"Play" forState: UIControlStateNormal];
また、ページの読み込み時に読み込み、ローカライズされた言語をサポートする場合:
-(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];
}
}