如何使用sender.titleForState(.Normal)获取Swift 3.0中的按钮的当前标题,ios!

Cha*_*era 4 title uibutton ios swift3

我试着像下面那样迅速得到title一个button.

@IBAction func buttonAction(_ sender: Any) {
  let buttonTitle = sender.titleForState(.Normal)!
}
Run Code Online (Sandbox Code Playgroud)

但它没有用,即使hint我们按.发件人后按下它也不会给任何东西.

那么在swift 3.0中这样做的正确方法是什么呢?

或者如果我们创建一个IBOutlet然后我们使用它currentTitle,它就像下面一样工作正常.为什么我们不能sender.在上面得到它

@IBOutlet var thebutton: UIButton!

@IBAction func buttonAction(_ sender: Any) {
  let buttonTitle = thebutton.currentTitle!
  print(buttonTitle)
}
Run Code Online (Sandbox Code Playgroud)

ozg*_*gur 20

因为参数发送者是类型Any而不是UIButton.将方法签名更改为:

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

你应该好好去.


小智 11

使用 Swift 5.0 的最智能版本:

@IBAction func buttonAction(_ sender: UIButton) {
    print(sender.currentTitle)
}
Run Code Online (Sandbox Code Playgroud)


小智 6

要获取按钮的标题,无论其在 swift 3.0 中的当前状态如何,请尝试使用以下命令:

    @IBAction func buttonPressed(_ sender:UIButton){
       let buttonTitle = sender.titleLabel?.text
       print("\(String(describing: buttonTitle)")
    }
Run Code Online (Sandbox Code Playgroud)

这将根据按钮当前所处的状态返回状态的标题。