2013-07-09 37 views
0

我有一个tabbar应用程序,我想将navigationcontroller添加到非rootviewcontroller。是否有可能将navigationcontroller添加到非rootviewcontroller

可能吗?

感谢您的任何帮助。

  • UPDATE 23:10 GMT + 2 enter image description here
+0

你是什么意思的非rootViewController?任何视图控制器(可能是splitViewController除外)都可以嵌入到导航控制器中。 – rdelmar

+0

但我做不到。我创建了一个tabbar应用程序,并将navigationcontroller添加到任何不在rool级别的viewcontroller中,并且出现以下错误:由于未捕获的异常'NSGenericException'导致应用程序终止,原因:'只能在源控制器由UINavigationController实例“。 –

+1

随着您显示的结构,您将不得不模态地呈现导航控制器。解决问题的另一种方法是将SecondViewController嵌入到导航控制器中(如果不需要该外观,您可以隐藏导航栏)。 – rdelmar

回答

1

UINavigationControllerUIViewController一个子类,因为这样就能呈现它也可以添加其视图作为一个子视图(假设你然后不释放UINavigationController实例本身,这会产生有趣的副作用)。

你不能做的是导航控制器推入一些提供的容器视图控制器。就像将导航控制器推入其他导航控制器堆栈一样。

+0

我创建了一个tabbar应用程序,并将navigationcontroller添加到任何不在rool level的viewcontroller中。然后放置一个按钮并用cntrl拖动push segue,并得到以下错误:终止应用程序,由于未捕获异常'NSGenericException',原因:'Push只有当源控制器由UINavigationController实例管理时才能使用segues。'如果我将navigationcontroller添加到位于根级别的viewcontroller,则不会出现问题。 –

+0

因此,您只能将推送段添加到导航控制器中的视图。否则,'推'是没有意义的。 – Wain

+0

我用图像更新了我的第一个条目,找出问题所在。 –

1

选项卡栏控制器中的每个选项卡都可以具有自定义视图控制器。您的自定义视图控制器可以作为导航控制器。

但是,在导航控制器,如果你想添加一个导航控制器可以说一个的tableview细胞的水龙头,你将不得不模态展示它的导航控制器上。您无法将导航控制器推入另一个导航控制器。

例如。

  1. 实例化对要呈现 YourAnotherRootVC * anotherVC =导航控制器根视图控制器[[YourAnotherRootVC的alloc] initWithNibName:@ “YourAnotherRootVC” 束:一个NSBundle mainBundle]];

  2. 实例化UiNavigationController UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:anotherVC];

  3. 将其呈现给当前导航控制器。 [self.navigationController presentModalViewController:navController animated:YES];

+0

我用图像更新了我的第一个条目,找出问题所在。 –

相关问题