2017-08-12 10 views
0

私はタブバーコントローラを持っており、ホームビューコントローラにはナビゲーションコントローラがあります。タブバーをクリックしたときに現在のナビゲーションコントローラを閉じる

-tabバーコントローラ

- HomeVC

--- VC1ナビゲーションプッシュ - > VC1のナビゲーションバーでVC2

は隠さなく、VC2の内側に隠されていません。そして私はそれをviewwillappearとviewwilldisが消えるように制御します。

override func viewWillAppear(_ animated: Bool) { 
    navigationController?.navigationBar.barStyle = .blackTranslucent 
} 
override func viewWillDisappear(_ animated: Bool) { 
    navigationController?.navigationBar.isHidden = false 
} 

しかし、スワイプすることなく、VC1に戻って、私はタブバーhomeVCのアイコンをクリックすると、ナビゲーションバーが非表示になります意味。私は現在のviewcontrollerを破棄してポップし、VC1に戻したいと思う。

+0

タブが変わったときにタブのトップビューコントローラーに戻りたいのですか? – Jaydeep

+1

なぜ、あなたは 'viewDidAppear()'でvc2からnavigaitonBarを隠し、vc1 'viewDidAppear()'で非表示にして、これを試してみてください。 –

+0

VC1では、viewWillAppearでnavigationBar.isHidden = falseを設定しました。 – Alper

答えて

1

popToRootViewControllerUINavigationControllerでこれを行うことができます。 tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)の方法でUITabBarDelegateのこれを処理しなければなりません。

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    if let rootView = self.viewControllers!["Index of VC1 Controller"] as? UINavigationController { 
     rootView.popToRootViewController(animated: false) 
    } 
} 
+0

私はVC1の中でviewWillAppearを削除して、タブバーコントローラでコードを書いた、私はそれが働いたと思う:) – Alper

関連する問題