当前位置:  开发笔记 > IOS > 正文

Swift - 无法转换'UITabBarController'类型的值

如何解决《Swift-无法转换'UITabBarController'类型的值》经验,为你挑选了1个好方法。

我有一个获取凭据的登录屏幕,并根据验证结果,用户被重定向到另一个视图控制器.登录视图控制器由NavigationController控制,一旦登录成功,用户将被重定向到受其控制的Home视图控制器UITabBarController.

当我触发segue时,它会显示以下错误:

无法将'UITabBarController'类型的值(0x10d414030)转换为'Mawq.HomeViewController'(0x10a7ed220).

以下是segue的代码:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "showHomeFromLoginSegue") {
            /*Provide ServiceToken a value from API*/

            // pass data to next view
            let destinationVC = segue.destinationViewController as! HomeViewController
            destinationVC.userObject = self.userObject;

        }
    }

知道如何克服这个问题吗?



1> Midhun MP..:

由于您的segue已连接到a UITabBarController,因此您需要UITabBarController使用viewControllers选项卡栏控制器的属性将其强制转换并获取ViewController对象.

let tabCtrl       = segue.destinationViewController as! UITabBarController
let destinationVC = tabCtrl.viewControllers![0] as! HomeViewController // Assuming home view controller is in the first tab, else update the array index
destinationVC.userObject = self.userObject;

For Swift 4:

let tabCtrl: UITabBarController = segue.destination as! UITabBarController
let destinationVC = tabCtrl.viewControllers![0] as! HomeViewController
destinationVC.userObject = userObject[String!]  // In case you are using an array or something else in the object

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有