33

UIButton があり、そのタイトルを更新したいのですが、次のようにすべての状態に対して常に行う必要はありません。

[myButton setTitle:@"Play" forState:UIControlStateNormal];
[myButton setTitle:@"Play" forState:UIControlStateHighlighted];
[myButton setTitle:@"Play" forState:UIControlStateSelected];

より良い方法はありますか?

4

5 に答える 5

64

ドキュメントによると、呼び出す必要があるのは次のとおりです。

Objective-C の場合:

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

スウィフトの場合:

myButton.setTitle("Play", for: .normal)

UIButton のドキュメントで理由が説明されています。

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

つまり、通常の値のみを設定すると、設定時に他の状態が参照されます。

于 2009-09-03T18:34:33.107 に答える
6

または、次の方法でタイトルを設定できます。

[myButton setTitle:@"Play" forState:UIControlStateNormal|UIControlStateHighlighted|UIControlStateSelected];
于 2014-12-17T07:04:51.233 に答える
1

UIButton のカテゴリを作成できます。

@implementation UIButton (Addition)
-(void)setTitleForAllStates:(NSString *)title {
     //you can add/remove this area : UIControlStateApplication, UIControlStateDisabled, UIControlStateReserved
     [self setTitle:title forState:UIControlStateNormal];
     [self setTitle:title forState:UIControlStateSelected];
     [self setTitle:title forState:UIControlStateHighlighted];
}
@end
于 2015-08-14T09:06:39.587 に答える