无法将UITabBarController类型的值转换为FirstViewController(xCode 6.4)

时间:2015-07-10 15:07:44

标签: xcode swift xcode6

我试图将变量从视图控制器传递到另一个视图控制器。首先,有一个连接屏幕。验证信息后,我将用户名和其他数据传递给整个程序(具有标签栏控制器)。

这是代码。我正在使用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

2 个答案:

答案 0 :(得分:0)

你不能像as那样把一件事变成另一件事,比如某种魔术师。您必须获得之后实际事物的引用。如果有一个FirstViewController是UITabBarController的子视图控制器之一,那么首先获取对UITabBarController的引用(你已经知道该怎么做),然后获取它的viewControllers属性 - 这些是它的孩子,你可以从那里通过索引号获得你想要的那个。

答案 1 :(得分:0)

您的标签视图控制器是一个拥有子视图控制器的容器视图控制器。据推测,FirstViewController是这些子视图控制器之一。因此,标签视图控制器和FirstViewController是不同的实例。您可以使用viewControllers属性访问标签栏的子项:

let firstVC = tabVC.viewControllers?.first
// firstVC should be your FirstViewController