在多个情节提要中工作。从点A-> TabBarController(选项卡2)-> NavigationControllerA-> StoryboardReference-> NavigationControllerB-> ViewControllerA-> ViewControllerB中获取。无需数据传递。
我的标签栏控制器设置在其自己的情节提要中,每个选项卡都通过导航控制器到达情节提要参考。然后,情节提要参考链接到另一个情节提要(观察),并通过导航控制器链接到ViewControllerA。然后,我想去执行对ViewControllerB的Segue。这些都是通过UIViewController扩展来完成的。 从我一直在阅读的书中,我应该这样:
let tab = 2
let sbOne = UIStoryboard(name: "Main", bundle: nil)
let tabBarController = sbOne.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = tabBarController
tabBarController.selectedIndex = tab
let sbTwo = UIStoryboard(name: "sbTwo", bundle: nil)
let viewControllerA = sbTwo.instantiateViewController(withIdentifier: "ViewControllerA")
performSegue(withIdentifier: "toViewControllerB", sender: self)
我收到NSInvalidArgument:点A“没有标识符为'toViewControllerB'的segue”
答案 0 :(得分:0)
迅速3+ 如果这是最好的答案,但是这是唯一有效的解决方案,我会感到惊讶。我的问题有点源于缺乏了解。但是我想到的概念是将功能分为两部分。设置tabbarcontroller选项卡,然后使用变量struct定位到目标。 我最终在A点设置了一个结构。
IDTokenCredentials
然后按下按钮,我将以此设置变量,然后调用以下函数:
struct Destination {
static var currentID = Int()
}
然后使用之前我可以将选项卡控制器设置为根视图控制器,然后转到所选选项卡上的ViewControllerA(第一个视图控制器)的部分代码。这是在uiviewcontroller扩展中完成的,但也可以在Point A的函数中完成。
Destination.currentID = currentID
goToViewControllerA()
然后只需检查是否设置了struct static var,然后选择到目标控制器(ViewControllerB)。这是在ViewControllerA中完成的,或者如果您必须通过多个视图控制器进行筛选,则可以在viewdidload中使用此模型在每个viewcontroller上建模功能。
goToViewControllerA(){
let tab = 2
let sbOne = UIStoryboard(name: "Main", bundle: nil)
let tabBarController = sbOne.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = tabBarController
tabBarController.selectedIndex = tab
}
如果存在的话,我想学习一种更好的方法。