UIButton 텍스트 변경


102

그래서 클릭하면 UIButton의 텍스트를 업데이트하려고합니다. 다음 줄을 사용하여 텍스트를 변경하고 있습니다.

calibrationButton.titleLabel.text = @"Calibration";

텍스트가 변경되고 있음을 확인했지만 앱을 실행하고 버튼을 클릭하면 잠시 "Calibration"으로 변경된 다음 기본값으로 바로 돌아갑니다. 왜 이런 일이 일어날 지 아이디어가 있습니까? 호출해야 할 일종의 새로 고침 기능이 있습니까?


답변:


248

하위 뷰를 배치 할 때 UIButton은 자체 제목 값을 사용하여 titleLabel의 텍스트 값을 설정하므로 네 가지 상태 (일반, 강조 표시, 선택됨, 비활성화 됨)에 대해 최대 4 개의 다른 문자열을 설정할 수 있습니다.

이 기능으로 인해 titleLabel의 텍스트를 직접 설정하는 것은 지속되지 않으며 하위 뷰를 레이아웃 할 때 버튼으로 재설정됩니다.

버튼 상태의 제목 텍스트를 변경하기 위해 수행해야하는 작업입니다.

[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];

4
그렇다면 button.titleLabel.text = @ "some text"는 무엇을해야합니까?
Boris Gafurov

4
@BorisGafurov를 입력 button.titleLabel하면 titleLabel이 읽기 전용 속성이므로 읽기 전용 속성의 속성도 모두 읽기 전용임을 알 수 있습니다. 점 표기법을 사용하여 편집하는 것은 작동하지 않으므로 편집하려면 명시적인 메서드가 필요합니다. 이것은 적어도 나에게는 의미가 있습니다.
erdekhayser 2013-08-26

1
나는이 (! 슬프게도 나는 이미 알고 생각하는) 실현 때까지 두 시간에 대한 낭비 생각
race_carr

답변 해 주셔서 감사합니다.
dinesharjani

3
@erdekhayser 사실, 읽기 전용 속성은 CAN / 쓰기 속성을 읽었습니다. titlelabel의 태그를 사용하여 액션 메서드에 정수를 전달합니다. Apple의 문서 링크 참조Although this property is read-only, its own properties are read/write. Use these properties primarily to configure the text of the button. For example:
Aaron


6

프로그래밍 방식으로 아래와 같이 버튼 제목을 설정할 수 있습니다.

[myButton setTitle:@"buttonTitle" forState:UIControlStateNormal];

스토리 보드에서 버튼 제목 속성을 설정할 수도 있습니다.


2

큰 문제는 아니고 분명 할 수도 있지만 버튼에 사용할 수있는 여러 상태가 있습니다. '잘못된'항목을 제공하면 원하는대로 텍스트 변경이 표시되지 않습니다.

여기에 표시된 방법을 사용하여 추가 한 텍스트가 내 버튼에 표시되지 않는 것으로 나타났습니다. 이 링크를 확인하여 원하는 UIControlState를 제공하고 있는지 확인하십시오.

UIControlStateHighlighted와 UIControlStateSelected의 차이점은 무엇입니까?


1

Swift 3.0의 경우

let button = UIButton(type: .system)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
button.setTitle("set here", for: .normal)
button.addTarget(self, action: #selector(TableViewController.actionButtonTocuh), for: .touchUpInside)
button.titleLabel?.textColor  = #colorLiteral(red: 0.1019607857, green: 0.2784313858, blue: 0.400000006, alpha: 1)
view.addSubview(button)

1

Swift 2.0의 경우 :

let btnObject : UIButton  = UIButton() 
btnObject.frame = CGRect(x: 8, y: 89, width: 70, height: 22)
btnObject.setTitle("Button Title", forState: UIControlState.Normal)
btnObject.titleLabel?.font = UIFont(name: "Helvetica Neue", size: 13)
btnObject.titleLabel?.textColor = UIColor.whiteColor()
btnObject.backgroundColor = UIColor(red: 189/255, green: 176/255, blue: 0/255, alpha: 1)
btnObject.titleLabel?.textAlignment = NSTextAlignment.Center
btnObject.addTarget(self, action: "btnbtnObjectClick:", forControlEvents: UIControlEvents.TouchUpInside)
subView.addSubview(btnObject)

1

모든 상태의 제목을 설정하지 않으려면 설정되지 않은 상태의 제목이 기본적으로 일반 상태의 제목으로 설정되므로 일반 상태로 설정하면됩니다.

btn.setTitle("Some text", for:.normal)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.