Mam ogólnej metody w jednej z moich klas, gdzie chcę mieć rodzaj rodzajowy zgodny z UIViewController
i UIPickerViewDelegate
. Jak mogę to zrobić? Myślałem, że w ten sposób:Swift ogólny typ zgodny z dwoma protokołami
func foo<T: UIViewController, UIPickerViewDelegate> (#viewController: T) {}
Ale ten kod nie „rozpoznać” UIPickerViewDelegate
. Pomyślałem także o użyciu rurki |
zamiast przecinka, ale jest jeszcze gorzej, kompilator tego nie akceptuje. Czy można to zrobić, czy muszę wykonać 2 parametry dla klasy i protokołu? Czy istnieje ładniejsze obejście?
Dzięki za pomoc i Wesołych świąt:]
Dziękuję bardzo! Nie znałem słowa kluczowego "where", które można tam użyć. Ale teraz mam inny problem, wywołując tę metodę w moim viewController (zgodnym z UIPickerViewDelegate) przez '.foo (viewController: self)' Otrzymuję następujący błąd: 'Type 'UIViewController' nie jest zgodny z protokołem 'UIPickerViewDelegate''. Jaki jest problem? Dzięki za pomoc ponownie;) – borchero
'klasa MyViewController: UIViewController, UIPickerViewDelegate {...}' działa dla mnie. Jak zadeklarować viewController? – rintaro
Mam również inne protokoły: 'UITableViewDataSource',' UITableViewDelegate', 'UIPickerViewDataSource' – borchero