Swift: возможно ли использовать общий и раскадровку для UIViewController
скажем, у меня есть подкласс UIViewController:
class InformationServiceMenuVC <T : InformationServiceItemProtocol>: UITableViewController {
}
Обычно я могу создать экземпляр контроллера вида, вызвав что-то вроде:
let vc = InformationServiceSideMenuVC<InformationServiceMenuItem>()
но как передать необходимый общий тип при использовании раскадровки?
Ответы
Ответ 1
Создайте конкретный класс, который наследуется от общего класса:
class SpecificInformationServiceMenuVC : InformationServiceMenuVC<Specific> {}
Затем вы можете использовать определенный подкласс в качестве типа вашего класса в раскадровке.
Это может даже работать только для создания типов:
typealias SpecificInformationServiceMenuVC = InformationServiceMenuVC<Specific>
Ответ 2
В Swift 3.0.1 я смог реорганизовать из этого:
class TagPickerViewController: BaseViewController, HasAppController {
}
extension TagPickerViewController: UITableViewDelegate {
}
в
class TagPickerViewControllerGeneric<TagViewModelClass: TagPickerViewModel>
: BaseViewController {
}
class TagPickerViewController: TagPickerViewControllerGeneric<TagPickerViewModel>,
HasAppController, UITableViewDelegate {
}
Сохраняя TagPickerViewController
в раскадровке /xib. Надеюсь, что это поможет.