我有一个按下按钮时运行的功能。
该功能内部是另一个功能。
我想将按下的按钮传递给内部函数,以便我可以根据内部函数中的内容更改按钮的文本。
@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语句,根据响应的内容更改文本。
答案 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)
}