将UIButton传递给函数

时间:2016-05-10 05:45:45

标签: ios swift uibutton

我有一个按下按钮时运行的功能。

该功能内部是另一个功能。

我想将按下的按钮传递给内部函数,以便我可以根据内部函数中的内容更改按钮的文本。

@IBAction func newItem(sender: AnyObject) {
    let urlFetch:String = urlField.text!
    self.service.createNewItem(urlFetch, I_WANT_BUTTON_HERE)
}

如何将按钮传递给功能?

如果有帮助,这就是我传递给它的功能:

func createNewItem(item_url: String, plus_button: UIButton) {
    let dataDictionary = ["url" : item_url]

    self.post("item/create", data: dataDictionary).responseJSON { (response) -> Void in
        plus_button.titleLabel!.text = "success"
    }

}

稍后我将添加一个if语句,根据响应的内容更改文本。

2 个答案:

答案 0 :(得分:2)

传递到newItem方法的对象实际上是您点按的按钮,因此您可以将参数sender的类型安全地转换为UIButton,如下所示:

@IBAction func newItem(sender: UIButton) {
  ...
  self.service.createNewItem(urlFetch, sender)
}

但也有一件事。设置titleLabel的文本不是更新按钮标题的正确方法。您应该使用setTitle:forState代替:

func createNewItem(item_url: String, plus_button: UIButton) {
  ...
  plus_button.setTitle("success", forState: .Normal)
}

答案 1 :(得分:2)

不是在newItem函数中发送AnyObject作为参数,而是传递UIButton。

@IBAction func newItem(sender: UIButton) {
    let urlFetch:String = urlField.text!
    self.service.createNewItem(urlFetch, sender)
}