我需要在按下按钮时向方法发送额外的参数,但无法找到使addTarget发送选择器的方法。
我宁愿使用一个块,但有没有一种方法可以在运行时将块附加到UIButton?
答案 0 :(得分:13)
是的,您可以使用BlocksKit库轻松完成:
#import <BlocksKit/UIControl+BlocksKit.h>
[someButton addEventHandler:^(id sender) {
// some action here
} forControlEvents:(UIControlEventTouchUpInside)];
或使用RxSwift button.rx.tap observable。
答案 1 :(得分:3)
默认不是。但是,您可以将UIButton子类化以实现此目的。有人做了here。
答案 2 :(得分:2)
也许以后参加派对,但你可以使用我几周前做过的简单扩展来实现你的目标。你可以得到它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)
}
}