프로그래밍 방식으로 신속하게 UIButton의 텍스트 변경


222

간단한 질문입니다. UIButton, currencySelector가 있고 프로그래밍 방식으로 텍스트를 변경하고 싶습니다. 내가 가진 것은 다음과 같습니다.

currencySelector.text = "foobar"

Xcode는 "예상 선언"오류를 표시합니다. 내가 뭘 잘못하고 있으며 버튼의 텍스트를 어떻게 변경합니까?

답변:


595

스위프트 3, 4, 5에서 :

button.setTitle("Button Title", for: .normal)

그렇지 않으면:

button.setTitle("Button Title", forState: UIControlState.Normal)

또한에 대해 @IBOutlet선언해야합니다 button.


32
당신은 생략 할 수 있습니다 UIControlState. 예forState: .Normal
funroll

11
Swift3는 이제 .normal소문자에 주목합니다
Matthew

6
Swift3 변화 forStatefor
매튜 P. 존스

1
Swift3 : self.btnBuy.setTitle ( "Buy", for : UIControlState.normal)
Thiru

5
스위프트 4도 button.setTitle("Button Title",for: .normal)작동합니다!, 감사합니다
Rakshitha Muranga Rodrigo

74

SwiftiOS 프로그래밍에 익숙하지 않은 사용자를위한 설명입니다 . 아래 코드 줄 :

button.setTitle("myTitle", forState: UIControlState.Normal)

에만 적용 IBOutlets하지 IBActions.

따라서 앱에서 버튼을 함수로 사용하여 코드를 실행하고 (예 : 음악 재생) 토글 변수 PlayPause기반으로 제목을 변경하려는 IBOutlet경우 해당 버튼에 대한 버튼 도 만들어야 합니다.

button.setTitle대해 사용하려고 IBAction하면 오류가 발생합니다. 일단 당신이 그것을 알면 분명하지만, 멍청한 놈들 (우리 모두는 그렇습니다)에게 이것은 유용한 팁입니다.


1
네, 당신의 대답을 볼 때까지 정확히 이것을 구글에하려고했습니다. 감사! +1
Evernoob 2016 년

1
발견하는 데 시간이 걸리는 것은 IOS의 패턴입니다. IBOutlet을 작성하지 않으면 액세스 할 수없는 UI 항목 속성이 있습니다. UI의 속성을 변경하려고하는데 액세스 할 수없는 경우 일부 코드를 실행중인 IBAction과 속성에 대한 액세스를 제공하는 IBOutlet이 있는지 확인하십시오.
Bendrix

8
이 대답은 의미가 없습니다. sender액션의 버튼 될 것입니다. 에 원하는 것을 적용 할 수 있습니다 sender. 이를 위해 콘센트가 필요하지 않습니다.
rmaddy

2
Bendix의 답변이나 그의 의견은 모두 정확하지 않습니다. 그들은 틀렸다.
vikingosegundo

이 질문에는 인터페이스 빌더가 그렇게 잘못되었다고 언급하지 않았습니다.
Edward

13

스위프트 5 :

    let controlStates: Array<UIControl.State> = [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved]
    for controlState in controlStates {
        button.setTitle(NSLocalizedString("Title", comment: ""), for: controlState)
    }

1
UIControl.State를 사용해야했습니다. UIControlState가 더 이상 사용되지
않는다고 말함

9

스위프트 3 :

버튼 제목 설정 :

//for normal state:
my_btn.setTitle("Button Title", for: .normal)

// For highlighted state:
my_btn.setTitle("Button Title2", for: .highlighted)


6

기여했을 때 제목 변경이 약간 다릅니다.

방금 문제가 발생했습니다. 속성 제목이있는 UIButton이 있으면 다음을 사용해야합니다.

my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)

같은 당 애플 setTitle이라는 닥 :

버튼의 제목과 속성 제목을 모두 설정하면 버튼은이 제목보다 속성 제목을 사용하는 것을 선호합니다.

귀중한 제목이 있었고 아무런 효과없이 제목을 설정하려고했습니다 ...


3

스위프트 3

@IBAction을 만들 때 :

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("string goes here", for: .normal)
}

그러면 발신자가 Any 대신 UIButton으로 설정되므로 btnAction을 UIButton으로 타겟팅합니다.


2

스위프트 4.2 이상

버튼의 IBOutlet 사용

btnOutlet.setTitle("New Title", for: .normal)

버튼의 IBAction 사용

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("New Title", for: .normal)
}

0

스위프트 3

let button: UIButton = UIButton()
button.frame = CGRect.init(x: view.frame.width/2, y: view.frame.height/2, width: 100, height: 100)
button.setTitle(Title Button, for: .normal)

0

swift-04를 사용하여 Xcode에서 버튼의 제목을 설정하려면 : 먼저 아래와 같이 매개 변수 제목과 UIController 상태로 setTitle이라는 메서드를 만듭니다.

func setTitle(_ title : String?, for state : UIControl.State)   {

}

버튼 동작 방법에서이 방법을 기억하십시오.

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