LoginSignup
5
4

More than 5 years have passed since last update.

UIControl の addTarget や removeTarget に加え removeAllTarget あると便利だよね?

Posted at

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
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4