如何在Swift

时间:2015-12-16 19:17:46

标签: ios swift

当应用程序启动时,功能检查是否是互联网连接。如果"是"启动画面将有关它的信息传递给View Controller。但这里我有一个问题,因为SplashScreen和ViewController之间是导航控制器。它看起来像这样:

Situation

我使用此功能从Splash Screen传递数据:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let VC:ViewController = segue.destinationViewController as! ViewController
    VC.connection = isConnection

// connection is a bool var in VievController
}

但是当我决定使用NavigationController时,Xcode会收到有关此错误的信息"无法转换类型' UINavigationController' (0x1835cec)到' DKTV_Reader.ViewController' (0x23888)"在这个时间线上显示我:

let VC:ViewController = segue.destinationViewController as! ViewController

在我使用NAvigationController之前,这个解决方案已经完美无缺。

1 个答案:

答案 0 :(得分:1)

您所需的ViewController已嵌入UINavigationController,因此从技术上讲,它不是destinationViewController,而是UINavigationController。您想要的destinationViewController是导航控制器的第一个视图控制器,您可以选择将其作为类型ViewController

进行投射
let destination = (segue.destinationViewController as? UINavigationController)?.viewControllers.first as? ViewController
destination?.connection = isConnection