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
Swiftは時には、指定されたジェネリックがリファレンス型かどうかを推測するのに問題があるので、 'Delegatable'プロトコルクラスをバインド(':class')しなければならないかもしれません( 'inout'ここに)。 – Hamish