TabbarController子控制器始终返回nil-Swift 4
我试图从子控制器访问对象,但它总是返回nil。请检查下面的代码TabbarController子控制器始终返回nil-Swift 4,swift,uiviewcontroller,uitabbarcontroller,uitabbar,Swift,Uiviewcontroller,Uitabbarcontroller,Uitabbar,我试图从子控制器访问对象,但它总是返回nil。请检查下面的代码 let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main) let vc: UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController vc.selectedIndex = 2
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let vc: UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController
vc.selectedIndex = 2
let vc1 = vc.viewControllers?[2] as? FormViewController //this line returns nil
vc1?.fillUserData(dataDic: convertJsonStringToDictionary(jsonString: decodedURL))
vc1?.formViewDelegate = self
self.present(vc, animated: true, completion: nil)
请放点光。你可以试试
let nav = vc.viewControllers?[2] as? UINavigationController
let vc1 = nav?.topViewController as? FormViewController
注意:此处不应访问任何UI元素
vc1?.fillUserData(dataDic: convertJsonStringToDictionary(jsonString: decodedURL))
因为它会使应用程序崩溃,你可以试试
let nav = vc.viewControllers?[2] as? UINavigationController
let vc1 = nav?.topViewController as? FormViewController
注意:此处不应访问任何UI元素
vc1?.fillUserData(dataDic: convertJsonStringToDictionary(jsonString: decodedURL))
由于它会根据您的评论使应用程序崩溃,第三个选项卡实际上是一个
UINavigationController
,它的FormViewController
作为rootViewController
将代码更新为:
if let nc = vc.viewControllers?[2] as? UINavigationController, let vc1 = nc.topViewController as? FormViewController {
vc1.fillUserData(dataDic: convertJsonStringToDictionary(jsonString: decodedURL))
vc1.formViewDelegate = self
}
根据您的评论,第三个选项卡实际上是一个
UINavigationController
,它将FormViewController
作为它的rootViewController
将代码更新为:
if let nc = vc.viewControllers?[2] as? UINavigationController, let vc1 = nc.topViewController as? FormViewController {
vc1.fillUserData(dataDic: convertJsonStringToDictionary(jsonString: decodedURL))
vc1.formViewDelegate = self
}
它可能为零,因为第三个视图控制器不是
FormViewController
。也许它是一个导航控制器。我确信第三视图控制器是formviewcontroller,它嵌入在导航控制器中。这就是我的全部观点vc.ViewController?[2]
不是一个FormViewController
,它是一个UINavigationController
。这就是为什么会得到nil
。它可能是nil,因为第三个视图控制器不是FormViewController
。也许它是一个导航控制器。我确信第三视图控制器是formviewcontroller,它嵌入在导航控制器中。这就是我的全部观点vc.ViewController?[2]
不是一个FormViewController
,它是一个UINavigationController
。这就是为什么会得到nil
。