2017-05-08 12 views
2
TabBar - Navi:A - aVC1 - aVC2 - aVC3 
     - Navi:B - bVC1 - bVC2 - bVC3 

ユーザがbVC3にいて、aVC3に関する通知を受け取ったとき。階層全体をaVC3にロードする方法は? ナビゲーションバーの戻るボタンで、aVC3→aVC2→aVC1に戻ってみたい。Swift/iOS。 VCを階層化してジャンプする方法

bVC3 →(touch notification)→ aVC3 →(back btn)→ aVC2 →(back btn)→ aVC1 

答えて

4

コードソリューション:

// switch to the first tab 
tabBarController?.selectedIndex = 0 

// reset the view controllers on the "A" stack 
let aNavController = self.tabBarController?.viewControllers![0] as! UINavigationController 
aNavController.popToRootViewController(animated: false) 

// initialize the view controllers 
let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let a2ViewController = storyboard.instantiateViewController(withIdentifier: "a2") 
let a3ViewController = storyboard.instantiateViewController(withIdentifier: "a3") 

// push them onto the navigation stack 
aNavController.pushViewController(a2ViewController, animated: false) 
aNavController.pushViewController(a3ViewController, animated: false) 

この現在ハードコードあなたは(この場合は最初なので、インデックス= 0)に切り替えるタブのインデックス。これは、データを渡すか状態を更新するためにView Controller間のセグを実行する場合にも変更する必要があります。

私はちょうど新しいプロジェクトでそれを試しました、そして、あなたが望むのと同じように動作します。

構造の可視化:この場合、

B3ビューコントローラ上のボタンは、それらが押されたかのように、コントローラA2A1を表示するために戻って移動する機能で、タブを切り替えてA3ビューコントローラを開きますナビゲーションスタック上に正常に表示されます。

screenshot of the storyboard showing navigation

関連する問題