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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage