2016-10-16 2 views
1

아래 buttontitle을 신속하게 처리하려고했습니다. 우리가 보낸 후 .을 누르면sender.titleForState (.Normal)를 사용하여 Swift 3.0, ios에서 버튼의 현재 제목을 얻는 방법!

@IBAction func buttonAction(_ sender: Any) { 
    let buttonTitle = sender.titleForState(.Normal)! 
} 

하지만 그것은 작동하지 않았다, 심지어는 어떤 hint 제공하지 않습니다. 우리가 IBOutlet을 만드는 경우

너무 빠른 3.0

또는 다른 사람을이 일을 올바른 방법은 무엇이며, 우리는 그 currentTitle, 그것은 아래와 같이 잘 작동 사용합니다. 매개 변수 보낸 사람 유형 Any 대신 UIButton에 있기 때문에 우리는 왜

@IBOutlet var thebutton: UIButton! 

@IBAction func buttonAction(_ sender: Any) { 
    let buttonTitle = thebutton.currentTitle! 
    print(buttonTitle) 
} 
+1

발신자를 'UIButton'으로 변경하십시오. – rmaddy

답변

6

에 대한 sender. 그것을 얻을 수 없습니다. 메서드 서명을 다음과 같이 변경하십시오.

@IBAction func buttonAction(_ sender: UIButton) { 
    if let buttonTitle = sender.title(for: .normal) { 
    print(buttonTitle) 
    } 
} 

여러분은 잘해야합니다.

+0

옙이 작동하지만, 아래와 같이 'let buttonTitle = sender.title (for : .normal)! '처럼 언랩해야합니다. 고맙습니다. –

+0

그냥 단추 제목에 값 (nil)이 있는지 확인해야하는 이유를 묻는 것입니다. 값이 있다는 것을 알기 때문에'nil'을 확인하는 대신 간단하게 'unwrap'을 할 수 있습니다. –

+0

예, 그것이 nil이 아니라고 확신하는 경우'if let' 절 대신'!'를 사용하십시오. 나는 개인적으로'! '를 가능한 한 많이 사용하지 않는다. 왜냐하면 코드가 예기치 않은 예외에 취약 해지기 때문에 가능한 한 많이 사용하지 않는다. – ozgur

0

스위프트 3.0 때문에

sender.titleForState (.Normal)로 변경! >> sender.title (. : 보통)!

변경 to AnyObject.

@IBAction func buttonPressed(_ sender: AnyObject) { 
    let title = sender.title(for: .normal)! 
    print("\(title) button pressed") 
} 
관련 문제