2
我有以下代码让我从任何视图控制器切换到任何其他视图控制器,并且参数需要是符合Delegatable
的NSViewController
协议。Swift 2函数强制执行类和协议遵守,通用参数无法推断
当我打电话给第3行的功能时,我得到Generic parameter 'C' could not be inferred
。
func foo() {
var viewController = CustomViewController()
showViewForController(&viewController)
}
private func showViewForController<C:NSViewController where C:Delegatable>(inout viewController: C) -> Void {
currentVC?.removeFromParentViewController()
currentVC?.view.removeFromSuperview()
viewController.delegate = self
addChildViewController(viewController)
self.view.addSubview(viewController.view)
currentVC = viewController
}
您的CustomViewController类可授权吗? –
另外,您不必将它作为'inout'来传递。 – ozgur
另外,你可能不得不让你的'Delegatable'协议类绑定(':class'),因为Swift有时无法推断给定泛型是否为引用类型(这可能是你为什么试图使用'inout'这里)。 – Hamish