Ho un metodo generico in una delle mie classi in cui desidero avere un tipo generico conforme a UIViewController
e UIPickerViewDelegate
. Come lo posso fare? Ho pensato di fare questo:Tipo generico Swift conforme a due protocolli
func foo<T: UIViewController, UIPickerViewDelegate> (#viewController: T) {}
Ma questo codice non "riconoscere" il UIPickerViewDelegate
. Ho anche pensato di usare la pipe |
invece della virgola ma questo è ancora peggio, il compilatore non lo accetta. E 'possibile farlo o devo fare 2 parametri per la classe e il protocollo? O c'è una soluzione migliore?
Grazie per il vostro aiuto e Buon Natale:]
Grazie mille! Non sapevo che la parola chiave 'where' possa essere utilizzata lì. Ma ora ho un altro problema quando chiami questo metodo nel mio viewController (conforme a UIPickerViewDelegate) di '.foo (viewController: self)' Ricevo il seguente errore: 'Type 'UIViewController' non è conforme al protocollo 'UIPickerViewDelegate''. Qual è il problema? Grazie ancora per qualsiasi aiuto;) – borchero
'classe MyViewController: UIViewController, UIPickerViewDelegate {...}' funziona per me. Come si dichiara viewController? – rintaro
Ho anche altri protocolli: 'UITableViewDataSource',' UITableViewDelegate', 'UIPickerViewDataSource' – borchero