Ich habe den folgenden Code, um mich von jedem View Controller zu einem anderen wechseln zu lassen, und der Parameter muss ein NSViewController
sein, der der Delegatable
entspricht Protokoll.Swift 2 Funktion erzwingt die Einhaltung von Klassen und Protokollen, generischer Parameter konnte nicht abgeleitet werden
Wenn ich die Funktion in Zeile 3 anrufe, bekomme ich 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
}
Ist Ihr CustomViewController Klasse Delegatable? –
Auch Sie müssen nicht als 'inout' passieren. – ozgur
Auch Sie können Ihre 'Delegatable' Protokollklasse gebunden machen müssen (': CLASS'), wie Swift manchmal Schwierigkeiten hat, Folgern, ob ein bestimmtes generisch ist ein Referenztyp (das auch gewesen sein mag, warum Sie versucht haben, 'inout' zu verwenden Hier). – Hamish