web-dev-qa-db-ja.com

UIButtonはすべてのターゲットアクションを削除します

UIButtonに複数のtarget-action-forControlEvents:を追加しました。これらをすべて、割り当てを解除せずに一度に削除したいと思います。次に、新しいターゲットを設定します。

これは可能ですか、どうすればいいですか?

324
SK9

removeTarget:action:forControlEvents: を呼び出し、ターゲットにnil、アクションにNULLを渡し、すべてのビットを設定するコントロールマスク(UIControlEventAllEvents)を使用します。

Objective-C

[someControl removeTarget:nil 
                   action:NULL 
         forControlEvents:UIControlEventAllEvents];

スイフト2

button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)

Swift 3

button.removeTarget(nil, action: nil, for: .allEvents)
779
progrmr

Swift 2の@progrmrの回答:

button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)

およびSwift 3:

button.removeTarget(nil, action: nil, for: .allEvents)

注:SwiftにはNULLがないため、nilに置き換えてテストしましたが、正常に動作するようです。

91
Hlung

迅速:

btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
6
Iya

Swift 2:

actionButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents)

Swift 3&4:

actionButton.removeTarget(nil, action: nil, for: .allEvents)

目的C:

[actionButton removeTarget: nil action: NULL forControlEvents: UIControlEventAllEvents];

それが役に立てば幸い。

3
Riajur Rahman
- removeTarget:action:forControlEvents:

このメソッドは、指定されたターゲットオブジェクトへのイベントの配信を停止します。

  1. このパラメーターは、ターゲットパラメーターで有効なオブジェクトを指定すると、そのオブジェクトに関連付けられたすべてのアクションメソッドへの指定されたイベントの配信を停止します。

  2. ターゲットパラメータにnilを指定すると、このメソッドは、すべてのターゲットオブジェクトのすべてのアクションメソッドへのそれらのイベントの配信を防止します。

    objective-c:

    [_myButton removeTarget:  //any validObject (or) nil
                  action:nil
        forControlEvents:UIControlEventAllEvents]; 
    

    スイフト:

    myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)
    

詳細については https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//Apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents =:

2
Uday.M