web-dev-qa-db-ja.com

UIButtonテキストの変更

ですから、UIButtonをクリックすると、UIButtonのテキストを更新しようとしています。次の行を使用してテキストを変更しています。

calibrationButton.titleLabel.text = @"Calibration";

テキストが変更されていることを確認しましたが、アプリを実行してボタンをクリックすると、一瞬「キャリブレーション」に変わり、すぐにデフォルト値に戻ります。なぜこれが起こっているのでしょうか?呼び出す必要があるリフレッシュ関数がありますか?

97
Julian Coltea

サブビューをレイアウトするとき、UIButtonは独自のタイトル値を使用してtitleLabelのテキスト値を設定するため、4つの状態(通常、強調表示、選択、無効)に対して最大4つの異なる文字列を設定できます。

この機能のため、titleLabelのテキストを直接設定しても保持されず、サブビューをレイアウトするときにボタンによってリセットされます。

これは、ボタンの状態のタイトルテキストを変更するために必要なことです。

[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];
241
Jesse Gumpo

ボタンのテキストを設定するには、次の方法を使用します。

[calibrationButton setTitle: @"Calibration" forState: UIControlStateNormal];

詳細については、UIButtonクラスリファレンスを参照してください... http://developer.Apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html

またはSwift 3:

calibrationButton.setTitle("Calibration", for: .normal)
31
Ashley Mills

プログラムでボタンのタイトルを以下のように設定できます。

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

ストーリーボードからボタンタイトルプロパティを設定することもできます。

5

Swift 2.0の場合:

let btnObject : UIButton  = UIButton() 
btnObject.frame = CGRect(x: 8, y: 89, width: 70, height: 22)
btnObject.setTitle("Button Title", forState: UIControlState.Normal)
btnObject.titleLabel?.font = UIFont(name: "Helvetica Neue", size: 13)
btnObject.titleLabel?.textColor = UIColor.whiteColor()
btnObject.backgroundColor = UIColor(red: 189/255, green: 176/255, blue: 0/255, alpha: 1)
btnObject.titleLabel?.textAlignment = NSTextAlignment.Center
btnObject.addTarget(self, action: "btnbtnObjectClick:", forControlEvents: UIControlEvents.TouchUpInside)
subView.addSubview(btnObject)
1
Suraj Sonawane

大したことではなく、おそらく明らかですが、ボタンにはいくつかの状態があります。 「間違った」ものを指定した場合、必要に応じてテキストが変更されることはありません。

ここに示す方法を使用して、追加したテキストがボタンに表示されていないことに気付きました。このリンクをチェックして、意図するUIControlStateを提供していることを確認してください。

IControlStateHighlightedとUIControlStateSelectedの違いは何ですか?

1
user3429534

Swift 3.0の場合

let button = UIButton(type: .system)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
button.setTitle("set here", for: .normal)
button.addTarget(self, action: #selector(TableViewController.actionButtonTocuh), for: .touchUpInside)
button.titleLabel?.textColor  = #colorLiteral(red: 0.1019607857, green: 0.2784313858, blue: 0.400000006, alpha: 1)
view.addSubview(button)
0
Stephen Chen