2017-06-03 106 views
0

我有一个视图控制器作为我的初始视图控制器。 有一个按钮(GO按钮),当用户点击时,它应该去另一个视图控制器(我们称之为目标视图控制器与标签'这是我想去')。同时我想通过一个Tabbar控制器。原因是我想我的导航堆栈中有tabbar,当用户在目标视图控制器上按下时,它必须转到tabbar控制器。图片显示了我想要的。我可以在导航堆栈中跳过tabbar的时候做些什么?导航通过视图控制器,而跳过一个 - iOS

enter image description here

+1

您可以创建一个视图控制器数组并将其设置为'navigationController.viewControllers'。 –

回答

1

你可以做到这一点很容易GO按钮的IBAction内:

@IBAction func goTapped(_ sender: UIButton) { 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc1 = storyboard.instantiateViewController(withIdentifier: "myTabBarViewController") 
    let vc2 = storyboard.instantiateViewController(withIdentifier: "myGoalViewController") 
    let controllers = [vc1, vc2] 
    self.navigationController!.setViewControllers(self.navigationController!.viewControllers + controllers, animated: true) 
} 

祝你好运!

1

将DestinationViewController可以手动:

if let destinationViewController = self.storyboard?.instantiateViewController(withIdentifier: "Storyboard ID of DestinationViewController") { 
    self.navigationController?.pushViewController(destinationViewController, animated: true) 
} 

而在你DestinationViewController,插入(或者,你可以直接在故事板制作SEGUE从FirstViewController到DestinationViewController) TabbarController到导航序列在视图后手动出现,然后您可以返回到TabbarController:

class DestinationViewController: UIViewController { 
    //...... 
    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 

     if self.isBeingPresented || self.isMovingToParentViewController { 
      var viewControllers = self.navigationController?.viewControllers 

      if let index = viewControllers?.endIndex.advanced(by: -1), 
       let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "Storyboard ID of TabBarController") { 
       viewControllers?.insert(tabBarController, at: index) 
       self.navigationController?.viewControllers = viewControllers! 
      } 
     } 
    } 
    //...... 
} 
相关问题