Ios 是否更改为其他选项卡中的视图控制器?
我正在尝试转换到一个不是根VC的VCIos 是否更改为其他选项卡中的视图控制器?,ios,swift,uitabbarcontroller,Ios,Swift,Uitabbarcontroller,我正在尝试转换到一个不是根VC的VC @IBAction func composeJournalTapped(sender: AnyObject) { self.tabBarController?.selectedIndex = 2 let journalVC = self.storyboard?.instantiateViewControllerWithIdentifier("JournalEntryTableViewController") as! JournalEntry
@IBAction func composeJournalTapped(sender: AnyObject) {
self.tabBarController?.selectedIndex = 2
let journalVC = self.storyboard?.instantiateViewControllerWithIdentifier("JournalEntryTableViewController") as! JournalEntryTableViewController
self.navigationController?.pushViewController(journalVC, animated: true)
}
我知道最明显的答案是向VC发送推送序列,但这不会切换标签。我想切换选项卡,并切换到该选项卡中不是根的viewController。上面的代码严格地切换选项卡。换句话说,我想从索引1切换到索引2,然后将segue从索引2 rootVC推到destinationVC。所以您需要实现所需的代码。如果选项卡栏控制器中的第二个选项卡是导航控制器,请将其转换为适当的类型,并实现一个界面,使您能够显示适当的视图控制器
我不能告诉你如何做的细节,因为我不知道你的应用程序的结构。有问题的VC是否已经在选项卡2的导航堆栈上?它是否总是不在堆栈上,所以推送序列是正确的做法?两种情况都有可能吗?您需要绘制案例和处理所有可能案例的设计代码。目标视图控制器是目标选项卡导航堆栈上的第二个VC。它将永远在那里。实例化destinationVC会将其从导航堆栈中移除,这不是我想要的。因此,请先让iAction将选项卡栏控制器的selectedIndex转换为所需的索引,然后获取指向该选项卡的视图控制器(导航控制器)的指针,将其转换为适当的类型,并使用对“popToViewController:animated”的调用弹出堆栈上的该视图控制器。@iAction func composeJournalTapped(发件人:AnyObject){self.tabBarController?.selectedIndex=2 self.navigationController!.popToViewController(navigationController!.ViewController[2]as!JournalEntryTableViewController,动画:false)}这会导致崩溃…索引超出范围假设索引2处的选项卡包含导航控制器,并且该控制器是您要弹出的,您需要告诉该导航控制器弹出,而不是self.navigationController。