2013-07-09 5 views
0

У меня есть приложение для вкладок, и я хотел бы добавить диспетчер навигации в контроллер без полномочий rootview.можно ли добавить диспетчер навигации в контроллер, не поддерживающий rootview

Возможно ли это?

Спасибо за любую помощь.

  • ОБНОВЛЕНИЕ 23:10 GMT + 2 enter image description here
+0

Что вы подразумеваете под управлением non-rootViewController? Любой контроллер вида (кроме, возможно, splitViewController) может быть встроен в контроллер навигации. – rdelmar

+0

, но я не мог этого сделать. Я создал приложение табуляции и добавленный навигационный контроллер для любого диспетчера представлений, который не находится на уровне rool, и получил следующую ошибку: Завершение приложения из-за неотображенного исключения «NSGenericException», причина: «Push segues может использоваться только тогда, когда управляющий источник управляется экземпляр UINavigationController. ' –

+1

Со структурой, которую вы показываете, вам нужно будет представить навигационный контроллер по модулю. Другой способ устранить проблему - это вставить SecondViewController в контроллер навигации вместо этого (вы можете скрыть панель навигации, если вы этого не хотите). – rdelmar

ответ

1

UINavigationController подкласс UIViewController, как таковой вы можете представить его, или вы можете добавить его вид как подвид (предполагается, что вы тогда не выпустить сам экземпляр UINavigationController, который будет иметь интересные побочные эффекты).

Что вы не можете сделать, это нажать контроллер навигации в некоторые из предоставленных контроллеров контейнеров. Подобно нажатию навигационного контроллера в другой стек навигационных контроллеров.

+0

Я создал приложение для табулатуры и добавил контроллер навигации в любой контроллер просмотра, который не находится на уровне rool.Then поместил кнопку и перетащил cntrl для push segue и получил следующую ошибку: Завершение приложения из-за неотображенного исключения «NSGenericException», причина: «Push segues может использоваться только тогда, когда управляющий источник управляется экземпляром UINavigationController.«Если я добавлю диспетчер навигации в диспетчер представлений, который находится на корневом уровне, никаких проблем не возникает. –

+0

Таким образом, вы можете добавлять только push segues к представлениям, которые находятся в контроллере навигации. В противном случае «толчок» не имеет смысла. – Wain

+0

Я обновил свою первую запись с изображением, выяснив проблему. –

1

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

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

например.

  1. Инстанцировать корневой контроллер представления для контроллера навигации вы хотите представить YourAnotherRootVC * anotherVC = [[YourAnotherRootVC Alloc] initWithNibName: @ расслоение "YourAnotherRootVC": [NSBundle mainBundle]];

  2. Instantiate UINavigationController UINavigationController * NavController = [[UINavigationController Alloc] initWithRootViewController: anotherVC];

  3. Представьте его текущему контроллеру навигации. [self.navigationController presentModalViewController: navController animated: YES];

+0

Я обновил свою первую запись с изображением, выяснив проблему. –