UIButtonに複数のtarget-action-forControlEvents:を追加しました。これらをすべて、割り当てを解除せずに一度に削除したいと思います。次に、新しいターゲットを設定します。
これは可能ですか、どうすればいいですか?
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)
Swift 2の@progrmrの回答:
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
およびSwift 3:
button.removeTarget(nil, action: nil, for: .allEvents)
注:SwiftにはNULL
がないため、nil
に置き換えてテストしましたが、正常に動作するようです。
迅速:
btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
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];
それが役に立てば幸い。
- removeTarget:action:forControlEvents:
このメソッドは、指定されたターゲットオブジェクトへのイベントの配信を停止します。
このパラメーターは、ターゲットパラメーターで有効なオブジェクトを指定すると、そのオブジェクトに関連付けられたすべてのアクションメソッドへの指定されたイベントの配信を停止します。
ターゲットパラメータにnilを指定すると、このメソッドは、すべてのターゲットオブジェクトのすべてのアクションメソッドへのそれらのイベントの配信を防止します。
objective-c:
[_myButton removeTarget: //any validObject (or) nil
action:nil
forControlEvents:UIControlEventAllEvents];
スイフト:
myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)