2011-02-10 21 views

Trả lời

196

Hey 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, có thể 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 ra các nút trong Interface Builder và muốn truy cập chúng trong mã, bạn có thể tận dụng lợi thế của một thực tế rằng họ đang thông qua tại như một cuộc tranh cãi với IBAction cuộc gọi:

- (IBAction) triggerActionWithSender: (id) sender; 

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

@property(retain) IBOutlet UIButton *someButton; 

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

+0

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

+1

Ngay bây giờ tôi đã nhận ra rằng tôi đang chỉnh sửa câu trả lời của bạn, MGunetileke, không phải của tôi :) Hy vọng điều đó sẽ ổn với bạn. – zoul

+1

Cũng muốn thêm rằng nếu bạn muốn có thuộc tính @ được khai báo 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. Một cuộc đối thoại bật lên để nhắc bạn về 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! – milesmeow

9

Giả sử rằng các nút là một UIButton:

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

Xem tài liệu cho UIButton.

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

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

Có vài tiểu bang mà UIbuttons cung cấp, bạn có thể có một cái nhìn:

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

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

12

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

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

Để Thay đổi tiêu đề Button:

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

Đối Disable:

[mybtn setEnabled:NO]; 
0

Nếu bạn muốn thay đổi tiêu đề như một phản hồi để được khai thác, bạn có thể thử điều này bên trong phương thức IBAction của nút trong ủy quyền bộ điều khiển chế độ xem của bạn. Thao tác này 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]; 
} 

}

trò chuyện thoại cụ thể để nói lên trò chuyện tất nhiên, nhưng bạn có thể sử dụng tài sản ow boolean địa phương của bạn để kiểm soát việc chuyển đổi.

2

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

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

và bạn vô hiệu hóa các nút theo:

button.isEnabled = false 

.normal cũng giống như UIControlState.normal vì loại là suy ra.

+0

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

Các vấn đề liên quan