thay đổi văn bản của nút và nút tắt trong iOS


106

Làm cách nào để thay đổi văn bản của nút và tắt một nút trong iOS?

Câu trả lời:


208

Này Namratha, Nếu bạn đang hỏi về việc thay đổi văn bản và trạng thái bật / tắt của UIButton, nó có thể được thực hiện khá dễ dàng như sau;

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

Nếu bạn đã tạo các nút trong Trình tạo giao diện và muốn truy cập chúng bằng mã, bạn có thể tận dụng thực tế là chúng được chuyển vào làm đối số cho các IBActionlệnh gọi:

- (IBAction) triggerActionWithSender: (id) sender;

Điều này có thể được liên kết với nút và bạn sẽ nhận được nút trong senderđối số khi hành động được kích hoạt. Nếu điều đó vẫn chưa đủ (vì bạn cần truy cập vào các nút ở nơi khác ngoài các hành động), hãy khai báo một lối thoát cho nút:

@property(retain) IBOutlet UIButton *someButton;

Sau đó, có thể liên kết nút trong IB với bộ điều khiển, mã tải NIB sẽ đặt giá trị thuộc tính khi tải giao diện.


Cảm ơn bạn! Tôi có UIButtons trong ứng dụng của mình nhưng tôi chưa đề cập đến chúng trong mã ở bất kỳ đâu. Tôi đã sử dụng trình xây dựng giao diện để đăng ký cơ chế hành động đích (để kết thúc, tôi có một vài phương pháp IBAction để xử lý các lần nhấp vào nút) vậy làm cách nào để truy cập các nút ??
Namratha

1
Cũng muốn thêm điều đó nếu bạn muốn khai báo thuộc tính @ cho bạn. Trong XCode 4, giữ phím CTRL, nhấp vào nút và sau đó kéo chuột vào tệp .h tương ứng của chế độ xem. Hộp thoại bật lên để nhắc bạn nhập tên thuộc tính. Sau đó, bạn sẽ có tài sản để bạn sử dụng trong mã của bạn!
milemeow

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

Sử dụng UIControlStateNormalđể đặt tiêu đề của bạn.

Có một số trạng thái mà các nút giao diện người dùng cung cấp, bạn có thể xem:

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

Tôi đã định +1 bài đăng này nhưng quyết định không. [self.eraseButton setTitle: @ "Erase" forState: UIControlStateDisabled]; Điều này không làm mờ nút. Nó không làm gì cả, nếu bạn đã có setEnable: as no.
coolcool1994

18

Nếu ai đó, người đang tìm kiếm giải pháp trong Swift, hạ cánh ở đây, đó sẽ là:

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

Tài liệu: isEnabled , setTitle .

Mã cũ hơn:

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

'setTitle ( : forState :)' đã được đổi tên thành 'setTitle ( : :) cho'
Lavi Avigdor

10

Giả sử rằng nút là UIButton:

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

Xem tài liệu cho UIButton.


3

Để thay đổi tiêu đề nút:

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

Để tắt:

[mybtn setEnabled:NO];

3

Trong Swift 3, bạn có thể chỉ cần thay đổi tiêu đề của một nút bằng cách:

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

và bạn tắt nút bằng cách:

button.isEnabled = false

.normalgiống như UIControlState.normalvì kiểu được suy ra.


Chúng ta nên sử dụng gì nếu nó là một nút hành động?
Karthikeyan Sk

0

Nếu bạn muốn thay đổi tiêu đề như một phản hồi khi được nhấn, bạn có thể thử điều này bên trong phương pháp IBAction của nút trong đại biểu bộ điều khiển chế độ xem của bạn. Điều này sẽ bật và tắt trò chuyện thoại. Thiết lập trò chuyện thoại không được đề cập ở đây!

- (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];
}

}

Tất nhiên, voiceChat dành riêng cho trò chuyện thoại, nhưng bạn có thể sử dụng thuộc tính boolean cục bộ của mình để điều khiển công tắc.


0

SWIFT 4 với phần mở rộng

bộ:

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

Và sử dụng:

yourBtn.setAllStatesTitle("btn title")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.