ボタンのテキストを変更し、iOSでボタンを無効にする


106

ボタンのテキストをどのように変更し、iOSでボタンを無効にしますか?

回答:


208

Namrathaさん、UIButtonのテキストと有効/無効の状態の変更について質問している場合は、次のように簡単に行うことができます。

[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled

Interface Builderでボタンを作成し、コードでそれらにアクセスしたい場合、それらがIBAction呼び出しへの引数として渡されるという事実を利用できます。

- (IBAction) triggerActionWithSender: (id) sender;

これはボタンにバインドできsender、アクションがトリガーされたときに引数にボタンを取得します。それでは不十分な場合(アクション以外の場所でボタンにアクセスする必要があるため)、ボタンのアウトレットを宣言します。

@property(retain) IBOutlet UIButton *someButton;

次に、IBのボタンをコントローラーにバインドすることができます。NIBロードコードは、インターフェイスのロード時にプロパティ値を設定します。


ありがとうございました!アプリにUIButtonがありますが、コードのどこにも記載していません。インターフェイスビルダーを使用してtarget-actionメカニズムを登録しました(そのために、ボタンのクリックを処理するためのIBActionメソッドがいくつかあります)。どうやってボタンにアクセスしますか?
Namratha

1
@プロパティを宣言する場合は、これも追加します。XCode 4では、CTRLキーを押しながらボタンをクリックし、マウスをビューの対応する.hファイルにドラッグします。プロパティ名の入力を求めるダイアログがポップアップ表示されます。次に、コードで使用するプロパティを取得します。
milesmeow

21
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];

UIControlStateNormalタイトルを設定するために使用します。

UIbuttonsが提供するいくつかの状態があります。

[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];

私はこの投稿に+1するつもりでしたが、そうしないことにしました。[self.eraseButton setTitle:@ "Erase" forState:UIControlStateDisabled]; これはボタンを暗くしません。すでにsetEnable:がnoの場合は、何もしません。
coolcool1994 2013

18

Swiftで解決策を探している誰かがここに着陸した場合、それは次のようになります:

myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text

ドキュメント:ISENABLEDのsetTitle

古いコード:

myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text

'のsetTitle(:forState :)'に改名されました'のsetTitle(::)のために'
ラビAvigdor

10

ボタンがUIButton

UIButton *button = …;
[button setEnabled:NO]; // disables
[button setTitle:@"Foo" forState:UIControlStateNormal]; // sets text

のドキュメントを参照してくださいUIButton


3

ボタンのタイトルを変更するには:

[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];

無効にする場合:

[mybtn setEnabled:NO];

3

Swift 3では、次の方法でボタンのタイトルを変更できます。

button.setTitle("Title", for: .normal)

ボタンを無効にするには:

button.isEnabled = false

.normalUIControlState.normal型が推論されるのと同じです。


アクションボタンの場合は何を使用すればよいですか?
Karthikeyan Sk 2017年

0

タップに対する応答としてタイトルを変更する場合は、ビューコントローラーデリゲートのボタンのIBActionメソッド内でこれを試すことができます。ボイスチャットのオンとオフを切り替えます。ボイスチャットの設定についてはここでは説明しません。

- (IBAction)startChat:(id)sender {
UIButton *chatButton = (UIButton*)sender;
if (!voiceChat.active) {
    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
                                                                   message:@"Voice Chat will become live. Please be careful with feedback if your friend is nearby."
                                                            preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * action) {}];
    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
    [voiceChat start];
    voiceChat.active = YES;
    [chatButton setTitle:@"Stop Chat" forState:UIControlStateNormal];
}
else {
    [voiceChat stop];
    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
                                                                   message:@"Voice Chat is closed"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
    voiceChat.active = NO;
    [chatButton setTitle:@"Chat" forState:UIControlStateNormal];
}

}

もちろん、voiceChatはボイスチャットに固有ですが、独自のローカルブールプロパティを使用してスイッチを制御できます。


0

SWIFT 4( 拡張子付き)

セットする:

// set button label for all states
extension UIButton {
    public func setAllStatesTitle(_ newTitle: String){
        self.setTitle(newTitle, for: .normal)
        self.setTitle(newTitle, for: .selected)
        self.setTitle(newTitle, for: .disabled)
    }
}

そして使用:

yourBtn.setAllStatesTitle("btn title")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.