를 UIButton
누르면 사용자가 일부 설정을 변경할 수있는 새보기가 표시됩니다. 보기가 닫히면의 제목 / 텍스트를 업데이트 UIButton
하여 새 상태를 반영 하고 싶습니다 . 전화 :
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
[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];
그러나 IB에 지정된대로 원본 텍스트 / 제목에서 변경되지 않는 것 같습니다.
답변
뷰 컨트롤러 클래스에 IBOutlet으로 지정된 버튼이 있고 Interface Builder의 콘센트로 올바르게 연결되어 있습니까 (새 참조 콘센트에서 파일 소유자로 Ctrl 드래그하고 UIButton 개체 선택)? 이것이 일반적으로 이러한 증상을 볼 때 발생하는 문제입니다.
편집 : 여기에서는 그렇지 않지만 속성 제목 을 버튼에 설정 한 다음 속성 제목이 아닌 제목을 변경하려고 하면 이와 같은 일이 발생할 수도 있습니다 .
답변
UIControlStateNormal의 제목 매개 변수를 설정하기 만하면 문제가 해결되었으며 다른 상태에서 자동으로 작동합니다. 다른 UIControlState를 설정할 때 문제가 발생한 것 같습니다.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
답변
Swift 4 기준 :
button.setTitle("Click", for: .normal)
답변
또 다른 문제를 발견했습니다. iOS 5에 도입 된 버그 일 수 있지만,이 문제를 접하는 다른 사람에게 지적 할 것이라고 생각했습니다.
XIB에서 버튼에 대한 기본 텍스트를 설정하지 않으면 프로그래밍 방식으로 설정하면 텍스트가 표시되지 않습니다. XIB에서 텍스트를 설정하면 나중에 프로그래밍 방식으로 버튼에 할당하는 모든 텍스트가 기본 텍스트의 크기로 잘립니다.
마지막으로, 버튼과 함께 뷰를 표시 한 다음 다른 뷰 (예 : ActionSheet)를 호출 한 다음 닫으면 프로그래밍 방식으로 버튼에 할당 한 텍스트가 지워지고 버튼 캡션이 설정 한 값으로 돌아갑니다. XIB에서.
답변
Caffeine Coma의 문제가 해결되었지만 UIButton에 제목이 표시되지 않는 또 다른 잠재적 인 원인을 제공하고 싶습니다.
UIButton에 대한 이미지를 설정하면
- (void)setImage:(UIImage *)image forState:(UIControlState)state
제목을 다룰 수 있습니다. 나는 이것을 어려운 방법으로 발견했고 여러분 중 일부가 같은 이유로이 페이지를 읽게 될 것이라고 상상합니다.
대신이 방법 사용
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
버튼 이미지와 제목은 영향을받지 않습니다.
나는 .xib에서 만든 프로그래밍 방식으로 만든 버튼과 버튼으로 이것을 테스트했습니다.
답변
신속한 :
button.setTitle("Swift", forState: UIControlState.Normal)
답변
문서가 답을 알려줍니다! UIButton은 사용할 속성 문자열이 이미있는 경우 제목 변경을 무시합니다 (Xcode 인터페이스 빌더를 사용할 때 얻는 기본값 인 것 같습니다).
다음을 사용했습니다.
[self.loginButton
setAttributedTitle:[[NSAttributedString alloc] initWithString:@"Error !!!" attributes:nil]
forState:UIControlStateDisabled];
[self.loginButton setEnabled:NO];