0

У меня есть Tabbarcontroller заполненной 5 Viewcontrollers и Navigationcontrollers как я сделал здесь:Построения иерархии в Tabbarcontroller с Navigationcontroller

[self addChildViewController:VC1]; 
[self addChildViewController:NavigationController; 
[self addChildViewController:VC2]; 
[self addChildViewController:VC3]; 
[self addChildViewController:VC4]; 

Теперь дело в том, что при нажатии кнопки на моей TabBar получает меня к каждому ViewController легко, где я могу представить Xib-Files и т. д.

Но теперь я хочу иметь навигационный контроллер, который отображается при нажатии кнопки на моей вкладке. У этого самого диспетчера навигации есть несколько Viewcontrollers.

Я попытался это представить свой первый ViewController в моем Navigationcontroller (этот код из Navigationcontroller.m):

- (void)viewDidLoad { 
[super viewDidLoad]; 

[self addChildViewController:VC5]; 
[self presentViewController:VC5]; 

}

Это ожидаемо не работал, и дал мне: Заявка пытался присутствует модально активный контроллер.

Есть ли хороший способ достичь такой конкретной цели? Я борюсь с этой проблемой. Заранее спасибо!

Редактировать: Вот как я настраивал его в своем раскадровке. В моем программном подходе первый контроллер представления не показан.

enter image description here

+0

он говорит У Р пытается представить VC5 на VC5. –

+0

Вы должны быть более конкретными. Вы пытаетесь добавить VC в свой навигационный стек? –

+0

Возможно, я ошибаюсь. Я покажу вам скриншот моей раскадровки, в которой я легко достиг этой цели. Но теперь я хочу настроить его программно. – Vancore

ответ

1

Вместо добавления контроллер представления VC5 к NavigationController в детстве (если это не значит быть ребенком?) Добавить его в качестве контроллера представления корня при добавлении NavigationController на панели вкладок.

Например, в коде панели вкладок:

[self addChildViewController:VC1]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:VC5]; 
[self addChildViewController:navigationController]; 
[self addChildViewController:VC2]; 
[self addChildViewController:VC3]; 
[self addChildViewController:VC4]; 

Apple, документы на UINavigationController здесь: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instm/UINavigationController/initWithRootViewController:

+0

Это может быть решение. Нужен ли навигационному контроллеру rootViewController? – Vancore

+1

Да, если вы создадите контроллер навигации в раскадровке, вы увидите, что по умолчанию он создает контроллер корневого представления, связанный с ним. – Workshed

+0

Спасибо, что решил мою проблему :). Вы знаете, как я могу получить доступ к панели навигации наверху? Я хочу добавить кнопку, которая подталкивает к другому диспетчеру просмотра, как это достижимо? – Vancore

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