2016-02-07 3 views
5

У меня есть раскадровка, как этоДержите TabBar при переходе на другой контроллер зрения

-> NavigationController -> LoginView -> TabBarController -> VC1 -> VC2

мне не удалось сделать «ход "от VC1 до VC2, сохраняя панель вкладок.

Я попробовал следующее:

  • Segue (Показать тип)

    self.performSegueWithIdentifier("toVC2segue", sender: self) 
    
  • Instantiate programmaticaly:

    // prepare for future display 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let navigationVC = UIApplication.sharedApplication().keyWindow?.rootViewController as! UINavigationController 
    
    // prepare next view 
    let vc = storyboard.instantiateViewControllerWithIdentifier("VC2id") 
    
    self.tabBarController?.navigationController?.pushViewController(vc, animated: true) 
    

, но и сделать панель вкладок исчезают.

Я попытался также

self.hidesBottomBarWhenPushed = false 

, но это ничего не изменило.

У вас есть идея?

PS: Я обновил мою схему выше ...

Edit: После прочтения ответов ниже, я попытался добавить еще один навигационный контроллер:

-> NavigationController -> LoginView -> TabBarController -> NavigationController -> VC1 -> VC2

, но у меня сейчас 2 панели навигации наложенной друг на друг в VC1 и VC2 ...

ответ

5

Вам нужно установить TabBarContoller в качестве RootViewController приложения. Поэтому схема должна быть следующим:

TabBarContoller -> Tab1 -> UINavigationController -> ViewContoller1 -> ViewContoller2.

В таком случае вы можете перемещаться между ViewContoller1 и ViewContoller2, а TabBarContoller останется видимым.

+0

поэтому каждая вкладка должна иметь свой собственный контроллер навигации? – Nahouto

+0

Каждая вкладка должна иметь свой собственный контроллер навигации или контроллер просмотра. Зависит от варианта использования. – salabaha

+2

Мне нужно перестроить мое полное приложение ... такая боль ... – Nahouto

5

Ваша иерархия просмотров не должна выглядеть так, если вы хотите сохранить tabBar.

-> NavigationController -> TabBarController -> VC1 -> VC2

Вы должны изменить его -> TabBarController -> NavigationController -> VC1 -> VC2

+0

спасибо, это единственное решение ... argh – Nahouto

0

Во-первых, вам нужно убедитесь, что ваш VC1-VC2 segue имеет тип (Show e.g. Push). Затем вам нужно убедиться, что VC1 встроен в UINavigationController enter image description here

Смежные вопросы