无法将UITabBarController类型的值强制转换为FirstViewController(xCode 6.4)
我试图将变量从一个视图控制器传递到另一个视图控制器。首先,有一个连接屏幕。当信息被验证后,我将用户名和其他数据传递给整个程序(有一个选项卡栏控制器) 这是代码。我使用的是Xcode 6.4。在以前的版本中,页面将打开,但变量没有传递。现在它只给了我上面的错误无法将UITabBarController类型的值强制转换为FirstViewController(xCode 6.4),xcode,swift,xcode6,Xcode,Swift,Xcode6,我试图将变量从一个视图控制器传递到另一个视图控制器。首先,有一个连接屏幕。当信息被验证后,我将用户名和其他数据传递给整个程序(有一个选项卡栏控制器) 这是代码。我使用的是Xcode 6.4。在以前的版本中,页面将打开,但变量没有传递。现在它只给了我上面的错误 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if (segue.identifier == "lienConne
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "lienConnecte") {
let nav = segue.destinationViewController as! UITabBarController // this line was just an attempt to find a solution
let vueFil = segue.destinationViewController as! FirstViewController
vueFil.utilisateur = utilisateur
}
}
当然,我知道在故事板中,segue指向选项卡栏控制器(因为我以后需要它),但我希望将值传递给FirstControllerView
找到了解决方案,对于那些将看到此帖子的人:
let tabBarController = segue.destinationViewController as! UITabBarController
let vueFil = tabBarController.viewControllers![0] as! FirstViewController
你不能像某种魔术师一样,通过说
as
把一件事变成另一件事。你必须得到你要找的东西的参考资料。如果FirstViewController是UITabBarController的子视图控制器之一,则首先获取对UITabBarController的引用(您已经知道如何操作),然后获取其ViewController
属性-这些是其子视图控制器,您可以从中,通过索引号获取所需的选项卡。选项卡视图控制器是拥有子视图控制器的容器视图控制器。大概,FirstViewController
就是这些子视图控制器之一。因此,选项卡视图控制器和第一视图控制器是不同的实例。您可以使用viewControllers
属性访问选项卡栏的子项:
let firstVC = tabVC.viewControllers?.first
// firstVC should be your FirstViewController
它不起作用<代码>让nav=segue.destinationViewController为!UITabBarController允许vueFil:AnyObject?=导航视图控制器?第一个