Anrufen des Selektors von der Protokollerweiterung
Ich baue eine einfache Theme-Engine und hätte gerne eine Erweiterung, die @ hinzufügUISwipeGestureRecognizer
zuUIViewController
Hier ist mein Code:
protocol Themeable {
func themeDidUpdate(currentTheme: Theme) -> Void
}
extension Themeable where Self: UIViewController {
func switchCurrentTheme() {
Theme.switchTheme()
themeDidUpdate(Theme.currentTheme)
}
func addSwitchThemeGestureRecognizer() {
let gestureRecognizer = UISwipeGestureRecognizer(target: self, action:#selector(Self.switchCurrentTheme))
gestureRecognizer.direction = .Down
gestureRecognizer.numberOfTouchesRequired = 2
self.view.addGestureRecognizer(gestureRecognizer)
}
}
Natürlich Compiler kann nicht finden#selector(Self.switchCurrentTheme)
da es nicht über @ ausgesetzt i@objc
Direktive. Ist es möglich, dieses Verhalten zu meiner Erweiterung hinzuzufügen?
AKTUALISIEREN Theme
ist eine Swift-Aufzählung, daher kann ich @ nicht hinzufüg@objc
vorThemeable
Protokol