如何以编程方式从位于导航控制器内部的视图控制器移动标签栏?

时间:2019-01-08 05:04:09

标签: ios swift uitabbarcontroller

我有一个视图控制器,该标签位于嵌套在导航控制器内部的选项卡栏中,如下图(VC的标题为“ Konfirmasi”)

enter image description here

这些VC位于标签栏索引= 3中。

我想以编程方式从标签栏索引= 3移至标签栏索引=0。我需要从该“ Konfirmasi” VC触发代码。

我尝试了2种方法。

第一个正在使用tabBarController?.selectedIndex = 0,但是即使VC处于移动状态,结果也不完全是我想要的,而是选项卡中的 图标 条仍位于索引= 3上,而不位于索引= 0

第二个,我也尝试使用下面的代码

    let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
    let vc: UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "HomeVC") as! UITabBarController
    vc.selectedIndex = 0
    self.present(vc, animated: false, completion: nil)

是的,它可以将选项卡栏中的图标移动到索引= 0,并且还显示正确的VC,但是似乎VC将再次全部实例化,因此将再次触发viewDidLoad方法。

我想避免再次触发“ viewDidLoad”,我只希望只触发viewWillAppear,就像通常在应用运行时从index = 3切换到index = 0一样。

如何实现?

1 个答案:

答案 0 :(得分:0)

如果从选项卡控制器中推送,则可以访问它。

在Konfirmasi控制器中添加打击功能

if let conts = self.navigationController?.viewControllers
    {

        let vc = conts[0]
        if let tab = vc.tabBarController
        {

            tab.selectedIndex = 0
        }
        self.navigationController?.popToRootViewController(animated: true)

    }
    else
    {
      self.navigationController?.popViewController(animated: true)
    }