답변:
Hey 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로드 코드는 인터페이스를로드 할 때 속성 값을 설정합니다.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
UIControlStateNormal
제목을 설정하는 데 사용 합니다.
UI 버튼이 제공하는 몇 가지 상태가 있습니다.
[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];
Swift에서 솔루션을 찾고있는 누군가가 여기에 도착하면 다음과 같습니다.
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
이전 코드 :
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Swift 3에서는 다음과 같이 간단히 버튼의 제목을 변경할 수 있습니다.
button.setTitle("Title", for: .normal)
다음과 같이 버튼을 비활성화합니다.
button.isEnabled = false
.normal
UIControlState.normal
유형이 유추되기 때문에 동일 합니다.
탭에 대한 응답으로 제목을 변경하려면 뷰 컨트롤러 델리게이트에있는 버튼의 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은 물론 음성 채팅에만 해당되지만 ow 로컬 부울 속성을 사용하여 스위치를 제어 할 수 있습니다.
확장 기능이있는 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")