ボタンの押したときにメソッドに余分な引数を送る必要がありますが、addTargetがそのためのセレクタを送信する方法を見つけることができません。ブロックをUIButtonのターゲットとして設定することはできますか?
私はむしろブロックを使用したいと思いますが、実行時にブロックをUIButtonに接続する方法はありますか?
ボタンの押したときにメソッドに余分な引数を送る必要がありますが、addTargetがそのためのセレクタを送信する方法を見つけることができません。ブロックをUIButtonのターゲットとして設定することはできますか?
私はむしろブロックを使用したいと思いますが、実行時にブロックをUIButtonに接続する方法はありますか?
デフォルトではありません。 UIButtonをサブクラス化してこれを実現することもできます。誰かがそれをしたhere。
#import <BlocksKit/UIControl+BlocksKit.h>
[someButton addEventHandler:^(id sender) {
// some action here
} forControlEvents:(UIControlEventTouchUpInside)];
またはRxSwift button.rx.tap、観察を使用します。
はい、あなたはBlocksKitライブラリで簡単にそれを行うことができます。
グレートライブラリを読んでいない場合!ありがとう。ありがとう。 –
迅速な仕事でさえ –
あなたの目標を達成するために、私は数週間前に作った簡単な拡張機能を使用することができます。あなたはhereを得ることができます。
そして、次のようにそれを使用する:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
let aButton = UIButton(type: .Custom)
aButton.frame = CGRectMake(100, 100, 100, 80)
aButton.backgroundColor = UIColor.greenColor()
aButton.handleControlEvent(.TouchUpInside) {() -> Void in
NSLog("ich")
}
self.view.addSubview(aButton)
}
}
その答えのコメントの一つはサブクラスにない理由について正当な理由を持って、私はOPの答えを過ぎ –