我的应用程序有一个详细视图控制器协议,声明它们必须有一个viewModel
财产:
protocol DetailViewController: class {
var viewModel: ViewModel? {get set}
}
我还有一些实现该协议的不同类:
class FormViewController: UITableViewController, DetailViewController {
// ...
}
class MapViewController: UIViewController, DetailViewController {
// ...
}
我的主视图控制器需要一个可以设置为任何值的属性UIViewController
实现的子类DetailViewController
协议。
不幸的是,我找不到任何有关如何执行此操作的文档。在 Objective-C 中这很简单:
@property (strong, nonatomic) UIViewController<DetailViewController>;
Swift 中似乎没有任何可用语法来执行此操作。我最接近的是在我的类定义中声明一个泛型:
class MasterViewController<T where T:UIViewController, T:DetailViewController>: UITableViewController {
var detailViewController: T?
// ...
}
但随后我收到一条错误消息“类‘MasterViewController’未实现其超类所需的成员”
这似乎在 Swift 中应该像在 Objective-C 中一样容易做到,但我找不到任何地方可以建议我如何去做。