Ich habe eine generische Methode in einer meiner Klassen, wo ich einen generischen Typ haben möchte, der UIViewController
und UIPickerViewDelegate
entspricht. Wie kann ich das machen? Ich dachte, dies zu tun:Swift generischer Typ, der zwei Protokollen entspricht
func foo<T: UIViewController, UIPickerViewDelegate> (#viewController: T) {}
Aber dieser Code nicht „erkennen“ die UIPickerViewDelegate
. Ich dachte auch an die Verwendung der Pipe |
anstelle des Kommas, aber das ist noch schlimmer, der Compiler akzeptiert das nicht. Ist das möglich oder muss ich 2 Parameter für die Klasse und das Protokoll angeben? Oder gibt es einen besseren Workaround?
Vielen Dank für Ihre Hilfe und Frohe Weihnachten:]
Thank you very much! Ich wusste nicht, dass das Schlüsselwort 'where' dort verwendet werden kann. Aber jetzt habe ich ein anderes Problem beim Aufruf dieser Methode in meinem ViewController (entspricht UIPickerViewDelegate) von '.foo (viewController: self)' Ich bekomme den folgenden Fehler: 'Typ 'UIViewController' entspricht nicht Protokoll 'UIPickerViewDelegate''. Was ist das Problem? Danke für jede Hilfe nochmal;) – borchero
'Klasse MyViewController: UIViewController, UIPickerViewDelegate {...}' funktioniert bei mir. Wie deklariert man den viewController? – rintaro
Ich habe auch einige andere Protokolle: 'UITableViewDataSource',' UITableViewDelegate', 'UIPickerViewDataSource' – borchero