让我们说,我有UIViewController子类:
class InformationServiceMenuVC <T : InformationServiceItemProtocol>: UITableViewController {
}
通常我可以通过调用类似的东西来创建视图控制器的实例:
let vc = InformationServiceSideMenuVC<InformationServiceMenuItem>()
但如何在使用故事板时传递所需的通用类型?
答案 0 :(得分:3)
创建一个继承自泛型类的具体类:
class SpecificInformationServiceMenuVC : InformationServiceMenuVC<Specific> {}
然后,您可以在故事板中使用特定子类作为类类型。
甚至可以制作一个类型:
typealias SpecificInformationServiceMenuVC = InformationServiceMenuVC<Specific>
答案 1 :(得分:1)
在Swift 3.0.1中,我能够从中重构:
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<ul class="nav nav-pills">
<li class="active"><a href="#">Regular link</a></li>
<li class="dropdown">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu" id="menu1">
<li>
<a href="#">2-level Menu <i class="icon-arrow-right"></i></a>
<ul class="dropdown-menu sub-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#">Menu</a>
</li>
<li class="dropdown">
<a href="#">Menu</a>
</li>
</ul>
为:
class TagPickerViewController: BaseViewController, HasAppController {
}
extension TagPickerViewController: UITableViewDelegate {
}
在storyboard / xib中保留class TagPickerViewControllerGeneric<TagViewModelClass: TagPickerViewModel>
: BaseViewController {
}
class TagPickerViewController: TagPickerViewControllerGeneric<TagPickerViewModel>,
HasAppController, UITableViewDelegate {
}
。希望它有所帮助