98

UIButton押すと、ユーザーがいくつかの設定を変更できる新しいビューが表示されます。UIButtonビューが閉じられたら、新しい状態を反映するようにタイトル/テキストを更新したいと思います。私は電話しています:

[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
[myButton setTitle: @"myTitle" forState: UIControlStateApplication];
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted];
[myButton setTitle: @"myTitle" forState: UIControlStateReserved];
[myButton setTitle: @"myTitle" forState: UIControlStateSelected];
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled];

しかし、IB で指定されている元のテキスト/タイトルから変更されることはないようです。

4

12 に答える 12

115

UIControlStateNormal の title パラメータを設定するだけで問題を解決し、他の状態でも自動的に機能します。別の UIControlState を設定すると問題が発生するようです。

[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
于 2011-05-19T17:45:13.660 に答える
52

View Controller クラスで IBOutlet として指定されたボタンがあり、Interface Builder でアウトレットとして適切に接続されていますか (Ctrl キーを押しながら新しい参照アウトレットからファイル所有者にドラッグし、UIButton オブジェクトを選択します)。これらの症状が見られるとき、それは通常私が抱えている問題です。


編集:ここではそうではありませんが、属性付きのタイトルをボタンに設定し、属性付きのタイトルではなくタイトルを変更しようとすると、このようなことも発生する可能性があります。

于 2009-06-23T16:52:16.287 に答える
17

Swift 4以降:

    button.setTitle("Click", for: .normal)
于 2015-03-05T07:16:18.570 に答える
13

別の問題を発見しました。これは iOS 5 で導入されたバグかもしれませんが、遭遇した他の人のために指摘したいと思います。

XIB でボタンのデフォルト テキストを設定しない場合、プログラムで設定してもテキストは表示されません。また、XIB にテキストを設定すると、後でプログラムでボタンに割り当てるテキストは、デフォルトのテキストのサイズに切り詰められます。

最後に、ボタンでビューを表示し、別のビュー (ActionSheet など) を呼び出してから閉じると、プログラムでボタンに割り当てたテキストが消去され、ボタンのキャプションは設定したものに戻ります。 XIB にアップします。

于 2011-11-15T11:29:56.630 に答える
12

Caffeine Coma の問題は解決されましたが、タイトルが UIButton に表示されない別の潜在的な原因を提供したいと思います。

を使用してUIButtonの画像を設定した場合

- (void)setImage:(UIImage *)image forState:(UIControlState)state

タイトルを覆うことができます。私はこれを難しい方法で見つけましたが、同じ理由でこのページを読んでしまう人もいると思います.

代わりにこの方法を使用してください

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state

ボタンの画像とタイトルは影響を受けません。

プログラムで作成したボタンと.xibで作成したボタンでこれをテストしました

于 2011-10-27T07:00:05.867 に答える
7

迅速な場合:

button.setTitle("Swift", forState: UIControlState.Normal)                   
于 2015-12-21T08:20:08.057 に答える
3

もう1つの考えられる原因は次のとおりです。

メソッドでボタンのタイトルを設定しようとすると、ボタンの(id)initWithNibName: ...プロパティは nil のままになります。UIButton にはまだ割り当てられていません。

(void)viewWillLoadまたはのようなメソッドでボタンを設定していることを確認する必要があります(void)viewWillAppearが、おそらく のように遅く設定したくないでしょう(void)viewDidAppear

于 2012-11-27T23:47:46.467 に答える
2

場合によっては、非常に複雑になることがあります。簡単な方法は、ボタン ビューを「更新」することです。

//Do stuff to your button here.  For example:

[mybutton setEnabled:YES];

//Refresh it to new state.

[mybutton setNeedsDisplay];
于 2013-03-01T05:11:42.630 に答える
0

メインスレッドにいることを確認してください。

そうでない場合でも、ボタンのテキストは保存されます。デバッガーでオブジェクトを検査すると、そこに表示されます。ただし、実際にはビューは更新されません。

于 2013-01-12T05:32:20.453 に答える