Câu trả lời:
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 IBAction
lệ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.
[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];
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
Để thay đổi tiêu đề nút:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Để tắt:
[mybtn setEnabled:NO];
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
.normal
giống như UIControlState.normal
vì kiểu được suy ra.
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.
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")