无法在swift中将'UINavigationController'类型的值转换为'UIViewController'

Jen*_*eal 0 uinavigationcontroller ios swift

我有一个导航控制器,用于我的父视图控制器以及我的子视图控制器.子视图控制器进入另外两个视图控制器,即"UserLoginViewController"和"RegisterVC".我希望UserLogin中的子视图按钮执行Button操作,该操作又执行涉及父视图控制器及其导航控制器的segue.

这是我使用的代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == Constants.embedSegue {
            let childViewController = segue.destinationViewController as! UserLoginViewController
            childViewController.delegate = self
        }
    }
Run Code Online (Sandbox Code Playgroud)

从parentVC调用UserLoginVC.

我得到一个错误说

无法将'UINavigationController'类型的值(0x109aa7860)转换为'Storey_Keeper.UserLoginViewController'(0x10645b810).

救命?

tsp*_*tsp 5

segue.destinationViewControllerUINavigationViewController如果你的内容UserLoginViewController是自己的,那将是一个UINavigationController.

你可以这样得到它:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == Constants.embedSegue {

        if let navigationController = segue.destinationViewController as? UINavigationController {
            let childViewController = navigationController.topViewController as? UserLoginViewController
            childViewController?.delegate = self
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一般来说,我会反对强制施法.