ubah teks tombol dan nonaktifkan tombol di iOS

107

Bagaimana Anda mengubah teks tombol dan menonaktifkan tombol di iOS?

Namratha
sumber

Jawaban:

208

Hai Namratha, Jika Anda bertanya tentang mengubah teks dan status aktif / nonaktif dari UIButton, hal itu dapat dilakukan dengan mudah seperti berikut;

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

Jika Anda telah membuat tombol di Interface Builder dan ingin mengaksesnya dalam kode, Anda dapat memanfaatkan fakta bahwa tombol tersebut diteruskan sebagai argumen ke IBActionpanggilan:

- (IBAction) triggerActionWithSender: (id) sender;

Ini bisa terikat ke tombol dan Anda akan mendapatkan tombol dalam senderargumen saat tindakan dipicu. Jika itu tidak cukup (karena Anda perlu mengakses tombol di tempat lain selain di tindakan), nyatakan outlet untuk tombol:

@property(retain) IBOutlet UIButton *someButton;

Kemudian dimungkinkan untuk mengikat tombol di IB ke pengontrol, kode pemuatan NIB akan mengatur nilai properti saat memuat antarmuka.

MGunetileke
sumber
Terima kasih! Saya memiliki UIButtons di aplikasi saya tetapi saya belum menyebutkannya dalam kode di mana pun. Saya telah menggunakan pembangun antarmuka untuk mendaftarkan mekanisme tindakan target (untuk itu, saya memiliki beberapa metode IBAction untuk menangani klik tombol) jadi bagaimana cara mengakses tombol ??
Namratha
1
Hanya juga ingin menambahkannya jika Anda ingin properti @ dideklarasikan untuk Anda. Di XCode 4, tahan tombol CTRL, klik tombol tersebut, lalu seret mouse Anda ke file .h yang sesuai di tampilan. Sebuah dialog muncul untuk meminta Anda memasukkan nama properti. Maka voila Anda akan memiliki properti untuk Anda gunakan dalam kode Anda!
milesmeow
21
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];

Gunakan UIControlStateNormaluntuk menyetel judul Anda.

Ada beberapa status yang disediakan UIbuttons, Anda dapat melihat-lihat:

[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];
berkafein tinggi
sumber
Saya akan memberi +1 pada postingan ini tetapi memutuskan untuk tidak melakukannya. [self.eraseButton setTitle: @ "Erase" forState: UIControlStateDisabled]; Ini tidak meredupkan tombol. Itu tidak melakukan apa-apa, jika Anda sudah memiliki setEnable: sebagai no.
coolcool1994
18

Jika seseorang, yang mencari solusi di Swift, mendarat di sini, itu adalah:

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

Dokumentasi: isEnabled , setTitle .

Kode lama:

myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
mikiqex.dll
sumber
'setTitle ( : forState :)' telah diganti namanya menjadi 'setTitle ( : for :)'
Lavi Avigdor
10

Dengan asumsi bahwa tombol tersebut adalah UIButton:

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

Lihat dokumentasi untuk UIButton.

zoul
sumber
3

Untuk Mengubah Judul Tombol:

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

Untuk Nonaktifkan:

[mybtn setEnabled:NO];
Bhavin Ramani
sumber
3

Di Swift 3, Anda cukup mengubah judul tombol dengan:

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

dan Anda menonaktifkan tombol dengan:

button.isEnabled = false

.normalsama seperti UIControlState.normalkarena jenisnya disimpulkan.

lmiguelvargasf
sumber
Apa yang harus kita gunakan jika itu adalah tombol aksi?
Karthikeyan Sk
1

SWIFT 4 dengan ekstensi

set:

// 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)
    }
}

dan gunakan:

yourBtn.setAllStatesTitle("btn title")
Oz Shabat
sumber
0

Jika Anda ingin mengubah judul sebagai respons untuk diketuk, Anda dapat mencoba ini di dalam metode IBAction tombol di delegasi pengontrol tampilan Anda. Ini mengaktifkan dan menonaktifkan obrolan suara. Menyiapkan obrolan suara tidak tercakup di sini!

- (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 tentu saja dikhususkan untuk obrolan suara, tetapi Anda dapat menggunakan properti boolean lokal untuk mengontrol sakelar.

Tim
sumber