2016-05-10 10 views
0

ボタンを押したときに実行される関数があります。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文を追加します。一つのことしかしもあり

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

答えて

2

newItemメソッドに渡されるオブジェクトは、実際にあなたが安全に以下のようなUIButtonにパラメータsenderの種類を変換することができますので、あなたがタップボタンです。 titleLabelのテキストを設定することは、ボタンのタイトルを更新する正しい方法ではありません。代わりにsetTitle:forStateを使用する必要があります。

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

'self.service.createNewItem(urlScrape、plus_button:sender)'が必要でしたが、これはかなりうまくいきました。 – Rorschach

2

代わりのnewItem機能にパラメータとしてANYOBJECT送信を、UIButtonを渡します。

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