UIButton에 여러 target-action-forControlEvents :를 추가했습니다. 아무것도 할당 해제하지 않고 한 번에 이들을 모두 제거하고 싶습니다. 그런 다음 새로운 목표를 설정합니다.
이것이 가능하며 어떻게해야합니까?
답변
removeTarget : action : forControlEvents :를 호출 하고 대상에 nil을 전달하고 조치에 NULL을 전달한 다음 모든 비트 (UIControlEventAllEvents)를 설정하는 제어 마스크를 사용하십시오.
목표 -C
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
스위프트 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
스위프트 3
button.removeTarget(nil, action: nil, for: .allEvents)
답변
스위프트 2의 @progrmr의 답변 :
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
스위프트 3 :
button.removeTarget(nil, action: nil, for: .allEvents)
참고 : Swift에는을 갖지 NULL
않으므로로 대체 테스트 nil
했으며 제대로 작동하는 것 같습니다.
답변
빠른:
btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
답변
스위프트 2 :
actionButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
스위프트 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)