Tôi có một phương pháp chung trong một trong các lớp học của mình, nơi tôi muốn có một loại chung phù hợp với UIViewController
và UIPickerViewDelegate
. Làm thế nào tôi có thể làm điều đó? Tôi đã nghĩ đến việc này:Loại chung loại Swift phù hợp với hai giao thức
func foo<T: UIViewController, UIPickerViewDelegate> (#viewController: T) {}
Nhưng mã này không "nhận ra" UIPickerViewDelegate
. Tôi cũng nghĩ đến việc sử dụng đường ống |
thay vì dấu phẩy nhưng điều này thậm chí còn tồi tệ hơn, trình biên dịch không chấp nhận điều đó. Có thể thực hiện điều này hay tôi phải thực hiện 2 tham số cho lớp và giao thức? Hoặc có cách giải quyết tốt hơn không?
Nhờ sự giúp đỡ của bạn và Giáng sinh vui vẻ:]
Cảm ơn bạn rất nhiều! Tôi không biết từ khóa 'where' có thể được sử dụng ở đâu. Nhưng bây giờ tôi có một vấn đề khác khi gọi phương thức này trong viewController của tôi (tuân theo UIPickerViewDelegate) bởi '.foo (viewController: self)' Tôi nhận được lỗi sau: 'Type 'UIViewController' không phù hợp với giao thức 'UIPickerViewDelegate''. Có chuyện gì vậy? Cảm ơn bạn đã giúp đỡ một lần nữa;) – borchero
'lớp MyViewController: UIViewController, UIPickerViewDelegate {...}' hoạt động cho tôi. Làm thế nào để bạn khai báo viewController? – rintaro
Tôi cũng có một số giao thức khác: 'UITableViewDataSource',' UITableViewDelegate', 'UIPickerViewDataSource' – borchero