2012-09-04 11 views
5

UIButtonに表示されているテキストを変更しようとすると、次のように動作しないことがあると、少し混乱しました。UIButtonのタイトルラベルを設定する

// 001 
[[[self button] titleLabel] setText:@"Peanuts"]; 

私は理由を知っていると思いますが、ここで私の考えを確認したかったのです。 001はtitleLabelテキストプロパティを設定しますが、UILabel(サブビューはUIButton)であるため、UIは再描画されません。これにより、UILabelテキストプロパティに内部的な変更が行われますが、悲しいことにUIでは視覚的な変更はありません。これは、メソッドのsetTitleように思わ

// 002 
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal]; 

:forStateは行くための正しい方法ですが、それは状態を必要とするの余分なオーバーヘッドを持っているが、そのはUIButtonに直接呼び出されるので、UIが再描画呼び出しません。私の質問は、これを行う正しい方法は002です、私は何か完全に間違っていない限り、それはそうだと思われるでしょうか?

答えて

7

あなたは正しいですか?

[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal]; 

は、ボタンのタイトルを設定する方法です。これにより、さまざまなコントロール状態のすべてでボタンの外観を制御することができます。ドキュメントから

:一般的に

、プロパティは状態のために指定されていない場合は、デフォルトではUIControlStateNormal値を使用する です。 UIControlStateNormalの値が設定されていない場合、プロパティのデフォルト値は システム値です。したがって、最低でも、 の値を通常の状態に設定する必要があります。

+0

ありがとう、よろしくお願いいたします。 – fuzzygoat

関連する問題