そのため、クリックすると UIButton のテキストを更新しようとしています。次の行を使用してテキストを変更しています。
calibrationButton.titleLabel.text = @"Calibration";
テキストが変更されていることを確認しましたが、アプリを実行してボタンをクリックすると、一瞬「キャリブレーション」に変わり、その後すぐにデフォルト値に戻ります。なぜこれが起こっているのでしょうか?呼び出す必要があるある種の更新機能はありますか?
そのため、クリックすると UIButton のテキストを更新しようとしています。次の行を使用してテキストを変更しています。
calibrationButton.titleLabel.text = @"Calibration";
テキストが変更されていることを確認しましたが、アプリを実行してボタンをクリックすると、一瞬「キャリブレーション」に変わり、その後すぐにデフォルト値に戻ります。なぜこれが起こっているのでしょうか?呼び出す必要があるある種の更新機能はありますか?
サブビューをレイアウトするとき、UIButton は独自のタイトル値を使用して titleLabel のテキスト値を設定するため、4 つの状態 (通常、強調表示、選択済み、無効) に最大 4 つの異なる文字列を設定できます。
この機能により、titleLabel のテキストを直接設定しても保持されず、サブビューをレイアウトするときにボタンによってリセットされます。
これは、ボタンの状態のタイトル テキストを変更するために必要なことです。
[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];
ボタンのテキストを設定するには、次のメソッドを使用します。
[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)
プログラムで、以下のようにボタンのタイトルを設定できます。
[myButton setTitle:@"buttonTitle" forState:UIControlStateNormal];
ストーリーボードからボタンのタイトル プロパティを設定することもできます。
大したことではなく、おそらく明らかですが、ボタンに使用できる状態がいくつかあります。「間違った」ものを指定すると、テキストが期待どおりに変更されません。
ここに示す方法を使用して、追加したテキストがボタンに表示されていないことに気付きました。このリンクをチェックして、意図した UIControlState を提供していることを確認してください。
UIControlStateHighlighted と UIControlStateSelected の違いは何ですか?
スイフト 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)