当前位置:  开发笔记 > 编程语言 > 正文

如何关闭控制器然后切换选项卡

如何解决《如何关闭控制器然后切换选项卡》经验,为你挑选了1个好方法。

我有一个标签栏控制器中的两个主要VC.在第一个VC上点击一个按钮,你将被带到另一个VC(而不是第二个标签栏VC),当你点击完成按钮时,我想转到第二个标签栏vc.

通常我会执行segue ...但是当我这样做时它会删除底部的标签栏.所以,我现在只是解雇并回到最初的VC,但我真的想去第二个标签栏vc,所以我尝试了这个

dismiss(animated: true) { 
  self.tabBarController?.selectedIndex = 2
}

我在另一个SO帖子上看到了self.tabBar ...但是我似乎无法找到我设置索引的位置...我试过1以防万一它自动从0开始,并且我试过2以防它开始从1开始

我是关闭还是有更好的方式来实现我想要的?

摘要

总结清楚.我有3个视图控制器.1和3位于标签栏控制器中.VC 2不在TBC中.要进入VC 2,VC 1上有一个按钮.当用户在VC 2上完成时,他/她点击一个按钮.而不是仅仅回到VC 1,我想转到VC 3,但是当我执行segue时,它转到VC 3但是移除了Tab Bar



1> d.felber..:

确保您拥有UINavigationController第一个ViewController.然后您可以访问tabBarController,然后可以切换选项卡:

查看控制器

// if vc was pushed
@IBAction func onFinish(_ sender: Any) {
    // store tabBarController for later use
    let tabBarController = self.tabBarController

    // pop to root vc (green one)
    _ = self.navigationController?.popToRootViewController(animated: false)

    // switch to 2nd tab (red vc)
    tabBarController?.selectedIndex = 1
}

// if vc was presented modally
@IBAction func onFinish(_ sender: Any) {
    self.dismiss(animated: false, completion: nil)

    if let tabBarController = self.presentingViewController as? UITabBarController {
        tabBarController.selectedIndex = 1
    }
}

// if vc was presented modally + switching tab in completion block
@IBAction func onFinish(_ sender: Any) {
    if let tabBarController = self.presentingViewController as? UITabBarController {
        self.dismiss(animated: true) {
            tabBarController.selectedIndex = 1
        }
    }
}

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