removeAllTarget
覚書です。
UIButton
などでよく動的にボタンが押された時の処理を変えたい時には次のメソッドを使いますよね。
ぶっちゃけこれぐらいだったら、普通に書いてもさほど変わらないけど、まぁ覚書程度に(笑)
public func addTarget(target: AnyObject?, action: Selector, forControlEvents controlEvents: UIControlEvents)
button.addTarget(self,
action: #selector(TestController.testSelector(_:),
forControlEvents: UIControlEvents.TouchUpInside)
だったり、
public func removeTarget(target: AnyObject?, action: Selector, forControlEvents controlEvents: UIControlEvents)
button.removeTarget(self,
action: #selector(TestController.testSelector(_:),
forControlEvents: UIControlEvents.TouchUpInside)
しかし、複雑な処理だったり状況次第では、以前セットしたSelectoreだったりTargetだったりがわからない場合も出てくることも・・・
(設計がいけていないからとかそういうのは今回無視していただけたら嬉しいですwww)
そんな時に、addTarget:
したものを全て消せたら楽!!ということで、作っちゃおう!!
public fund removeAllTarget()
extension UIControl {
public func removeAllTarget() {
self.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
}
}
これで、UIButton
などから、 removeAllTarget
が使えるようになる。
button.removeAllTarget()
おまけ
ちなみに、ちゃんとコードを読めば書いてある!!
remove the target/action for a set of events.
pass in NULL for the action to remove all actions for that target