我试图将变量从视图控制器传递到另一个视图控制器。首先,有一个连接屏幕。验证信息后,我将用户名和其他数据传递给整个程序(具有标签栏控制器)。
这是代码。我正在使用Xcode 6.4。在以前的版本中,页面将打开但变量没有通过。现在它只是给我上述错误。
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
答案 0 :(得分:0)
你不能像as
那样把一件事变成另一件事,比如某种魔术师。您必须获得之后实际事物的引用。如果有一个FirstViewController是UITabBarController的子视图控制器之一,那么首先获取对UITabBarController的引用(你已经知道该怎么做),然后获取它的viewControllers
属性 - 这些是它的孩子,你可以从那里通过索引号获得你想要的那个。
答案 1 :(得分:0)
您的标签视图控制器是一个拥有子视图控制器的容器视图控制器。据推测,FirstViewController
是这些子视图控制器之一。因此,标签视图控制器和FirstViewController
是不同的实例。您可以使用viewControllers
属性访问标签栏的子项:
let firstVC = tabVC.viewControllers?.first
// firstVC should be your FirstViewController