在另一个具有有效负载的 UITabBarController VC 中触发 segue?



我可以使用tabBarController?.selectedIndex = targetIndex在UITabBarController中从一个UIViewController交换到另一个UIViewController。我想知道如何在切换后触发 segue。

我试过做if let vc = tabBarController?.viewControllers?[0] as MyViewController {}并打电话给vc.performSegue()但它出错了,抱怨它是一个UINavigationController。(我什至无法让vc.prepare()工作,但我无法弄清楚如何使用 segue 标识符从头开始创建一个 UIStoryBoardSegue,它需要作为第一个参数。我认为这是因为我在UITabBarController中的所有UIViewController都在导航控制器中。

如何在标签栏控制器中从索引 0 切换到 1,然后在导航控制器中嵌入的视图控制器中触发 segue?请注意,我需要将调用对象(我的 UIViewController(的副本或用于上下文目的的有效负载传递给要绑定到的 UIViewController。

就像你说的,索引中显示的视图控制器是一个UINavigationController。你应该得到UINavigationController的rootViewController,并在RootViewController上执行Segue。

下面的代码应该可以工作:

self.tabBarController?.selectedIndex = 1
guard let vc = self.tabBarController?.viewControllers?[1] as? UINavigationController else {
return
}
guard let rootVC = vc.viewControllers.first as? SecondViewController else {
return
}
rootVC.vc = self
rootVC.performSegue(withIdentifier: "test", sender: self)

最新更新