无法将“UITableViewController”类型的值转换为“UINavigationController”

Jos*_*osh 3 ios segue swift

我试图从一个视图控制器转到另一个视图控制器,并将数据传递给下一个控制器。但我不断收到此错误:

Could not cast value of type 'UITableViewController' to 'UINavigationController' 
Run Code Online (Sandbox Code Playgroud)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

   if (segue.identifier == "segueLogWaterData") {            
        // pass data to next view
        let nav = segue.destinationViewController as! UINavigationController
        let segueViewController = nav.topViewController as! WaterDataViewController 
    }
}
Run Code Online (Sandbox Code Playgroud)

这发生在WaterDataViewController作为UITableViewController. 我也试过嵌入WaterDataViewController到 aUINavigationController但我得到了类似的错误:

Could not cast value of type 'UITableViewController' to 'MyApp.WaterDataViewController'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Bra*_*ech 5

实际上,这segue.destinationViewController不是导航控制器;相反,它是 segue 打开的视图控制器。由于UITableViewController是 的子类UIViewController,因此此代码应该可以正常工作:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "segueLogWaterData") {
        let dest = segue.destinationViewController as! WaterDataViewController
        //Assign to dest's properties
    }
}
Run Code Online (Sandbox Code Playgroud)