프로그래밍 방식으로 UIButton 제목 / 텍스트를 업데이트 할 수 있습니까?
를 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];
또 다른 문제를 발견했습니다. iOS 5에 도입 된 버그 일 수 있도록,이 문제를 접하는 다른 사람에게 지적 할 생각이있었습니다.
XIB에서 버튼에 대한 기본 텍스트를 설정하지 않고 표시 프로그래밍 방식으로 설정하면 텍스트가 표시되지 않습니다. XIB에서 텍스트를 설정하면 나중에 프로그래밍 방식으로 버튼에 할당하는 모든 텍스트가 기본 텍스트의 크기로 잘립니다.
마지막으로 버튼과 함께 뷰를 표시 한 다음 다른 뷰 (예 : ActionSheet)를 호출 한 다음이를 닫으면 프로그래밍 방식으로 버튼에 할당 한 텍스트가 지워지고 버튼 캡션이 설정 한 값으로 돌아갑니다. XIB에서.
Caffeine Coma의 문제가 해결되지 않는 UI 또 다른 문제가 표시되지 않습니다.
UIButton에 대한 이미지를 설정하면
- (void)setImage:(UIImage *)image forState:(UIControlState)state
제목을 다룰 수 있습니다. 나는 발견 할 수있는 방법으로 발견하고 여러분 중 일부가 같은 M이 페이지를 읽게 될 상상합니다.
대신이 방법 사용
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
버튼 이미지와 제목은 영향을받지 않습니다.
나는 .xib에서 만든 프로그래밍 방식으로 만든 버튼과 버튼으로 테스트했습니다.
Swift 4 기준 :
button.setTitle("Click", for: .normal)
신속하게 :
button.setTitle("Swift", forState: UIControlState.Normal)
문서가 답을 알려드립니다! UIButton은 사용할 수있는 인터페이스를 사용할 수 있습니다. (Xcode 인터페이스 빌더를 사용할 때 사용할 수 있습니다).
다음을 사용했습니다.
[self.loginButton
setAttributedTitle:[[NSAttributedString alloc] initWithString:@"Error !!!" attributes:nil]
forState:UIControlStateDisabled];
[self.loginButton setEnabled:NO];
한 가지 더 가능한 원인은 다음과 가변합니다.
(id)initWithNibName: ...
메서드 에서 버튼의 제목을 설정하려고 하면 버튼 속성은 여전히 전무입니다. 아직 UIButton에 할당되지 않은 것은 아닙니다.
당신은 당신이 좋아하는 방법에 버튼을 설정하고 있는지 확인해야 (void)viewWillLoad
하거나 (void)viewWillAppear
,하지만 당신은 아마 늦게을 설정하지 않습니다 (void)viewDidAppear
.
정말 복잡해질 수 있습니다. 쉬운 방법은 버튼보기 를 " 새로 고침 "하는 것입니다!
//Do stuff to your button here. For example:
[mybutton setEnabled:YES];
//Refresh it to new state.
[mybutton setNeedsDisplay];
나는 이것에 계속 문제가 있지만 유일한 해결책은 이미지와 레이블을 uibutton에 하위보기로 추가하는 것입니다. 그런 다음 주요 문제는 제목이 Attributed 인 UIButton을 사용하고 것입니다. Plain으로 변경했을 때 titleLabel.text를 설정하는 것만으로 효과가 있음!
@funroll은 절대적으로 옳습니다. 여기에서 필요한 것이 무엇인지 확인할 수 있습니다. 함수가 메인 주문 실행 확인하십시오 . 다음과 같이 할 수 있습니다. NSUserDefaults가 ViewDidLoad에서 확인 조건이 다른보기에서 버튼을 눌렀는지 여부 (NSUserDefaults에 다른보기에서 필요한 정보) 및 조건에 따라 필요한 제목에 따라 UIButton, 그래서 [yourButton setTitle : @ "Title"forState : UIControlStateNormal];
메인에 있는지 확인하십시오.
그렇지 않은 경우에도 버튼 텍스트를 저장합니다. 디버거에서 개체를 검사 할 때 있습니다. 그러나 실제로 뷰를 업데이트하지는 않습니다.
'IT' 카테고리의 다른 글
.NET 어셈블리에 서명하지 않는 데 문제가 있습니까? (0) | 2020.08.30 |
---|---|
ARG 또는 ENV,이 경우 어느 것을 선호합니까? (0) | 2020.08.30 |
jquery에서 href로 요소를 얻는 방법은 무엇입니까? (0) | 2020.08.29 |
Eclipse : 어설 션 사용 (0) | 2020.08.29 |
scipy / numpy로 용어에서 데이터 비닝 (0) | 2020.08.29 |