2017-06-03 7 views
0

私はビューコントローラを私の最初のビューコントローラとして持っています。 ボタンがあります(GOボタン)。ユーザーがタップすると、別のビューコントローラーに移動する必要があります(ラベル 'Destination View Controller'というラベルが付いています)。一方、私はそれをTabbarのコントローラーに渡したいと思います。なぜなら、私はナビゲーションスタックにタブバーを持っていて、ユーザーがデスティネーションビューコントローラを押したときにタブバーコントローラに移動しなければならないからです。写真は私が望むものを示しています。ナビゲーションスタックでタブバーをスキップするにはどうすればよいですか?1つをスキップしている間、ビューコントローラを介したナビゲーション - 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) 
} 

(または、あなたが直接、ストーリーボードにFirstViewControllerからDestinationViewControllerにセグエを作ることができる)

そして、あなたの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! 
      } 
     } 
    } 
    //...... 
} 
関連する問題