2

UIButtonを作成してtitleLable.textテキストを設定するために使用しますが、ボタンにテキストが表示されないため、メソッドに置き換えてテキストを表示します。なぜ機能しない setTextのかを知りたいだけです。titleLable.text

    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    button.titleLabel.text=@"text";

その後、以下のように使用されます

    [button setTitle:@"text" forState:UIControlStateNormal];
4

2 に答える 2

5

titleLabelreadonly物件だからです。

titleLabel

currentTitleボタンのプロパティの値を表示するビュー。(読み取り専用)

@property(nonatomic, readonly, retain) UILabel *titleLabel>>

討論

このプロパティは読み取り専用ですが、独自のプロパティは読み取り/書き込みです。これらのプロパティは、主にボタンのテキストを構成するために使用します。例えば:

UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];

button.titleLabel.font = [UIFont systemFontOfSize: 12];

button.titleLabel.lineBreakMode = UILineBreakModeTailTruncation;

ラベルオブジェクトを使用して、テキストの色や影の色を設定しないでください。代わりに、このクラスのsetTitleColor:forState:メソッドとsetTitleShadowColor:forState:メソッドを使用してこれらの変更を行ってください。

titleLabelプロパティは、ボタンがまだ表示されていない場合でも値を返します。システムボタンの場合、プロパティの値はnilです。

可用性

Available in iOS 3.0 and later.

UIButton.hで宣言

詳細については、 UIButtonクラスを参照してください。

于 2012-12-19T09:10:13.463 に答える
1

Midhunの答えは完全に真実ですが、質問には答えません。彼が言うように、labelプロパティは読み取り専用ですが、textプロパティを含め、そのプロパティは読み取り専用ではありません。

テキストの設定が機能しない理由は、コントロールの状態によっては、ボタン自体が内部でテキストを設定するためです。これにより、テキストとして設定したものがすべて上書きされます。

This is why you use setTitle:forControlState: instead. The button will use the value for the normal state for all other states, unless you tell it otherwise, but if you never set a title for any control state, it will not show the label.

于 2012-12-19T09:21:56.783 に答える