을 닫거나 취소하려면 #selector
의 하위 클래스 UIBarButtonItem
을 사용하는 작은 라이브러리 McPicker이 있습니다. 이것은 Swift 4와 Xcode 9까지 잘 돌아갔다. 내가 무엇을해도 상관없이 cancel
셀렉터는 done
UIBarButtonItem #selector
에서도 호출된다.스위프트 4는 일관되게 잘못된 #selector를 호출합니다.
저는 왜 단 하나의 선택기가 불려지는지 전혀 아이디어가 없습니다. 심지어 모든 버튼을 만들기 위해 해킹을 해본 적이 있더라도 done
함수를 호출하면 cancel
이 여전히 호출됩니다.
내 UIBarButtonItems은과 같이 McPickerBarButtonItem.swift
class functions에 의해 초기화하기됩니다
self.init(barButtonSystemItem: barButtonSystemItem, target: mcPicker, action: #selector(McPicker.done))
는 McPicker.swift
에 아래의 호출 :
@objc internal func done() {
self.doneHandler(self.pickerSelection)
self.dismissViews()
}
@objc internal func cancel() {
self.cancelHandler()
self.dismissViews()
}
다시 말하지만, 나는 #selector(McPicker.done)
또는 #selector(McPicker.cancel)
을 설정하면 만#selector(McPicker.cancel)
이제까지라고 . 나는 이것이 왜 어떤 제안이 대단히 감사 하리라는 생각이 들었는지에 대한 아이디어가 없다. 감사!
에 대한 문제의보기이었다 않는 한 탭을 무시하고 다음을 추가했다 'Selector ("done")'을 사용하여'#selector (McPicker.done) '? –
@KevinBallard, 시도해 보았습니다. 같은 문제, 여전히'func cancel()'을 호출합니다. 나를 미치게 만들어! – kev
클릭했을 때 버튼의'action'속성을 기록하면 어떻게됩니까? 아마도 펜촉은 사실 이후에 그것을 바꿀 것입니다. –