我有一个tabbar应用程序,我想将navigationcontroller添加到非rootviewcontroller。是否有可能将navigationcontroller添加到非rootviewcontroller
可能吗?
感谢您的任何帮助。
- UPDATE 23:10 GMT + 2
我有一个tabbar应用程序,我想将navigationcontroller添加到非rootviewcontroller。是否有可能将navigationcontroller添加到非rootviewcontroller
可能吗?
感谢您的任何帮助。
UINavigationController
是UIViewController
一个子类,因为这样就能呈现它也可以添加其视图作为一个子视图(假设你然后不释放UINavigationController
实例本身,这会产生有趣的副作用)。
你不能做的是导航控制器推入一些提供的容器视图控制器。就像将导航控制器推入其他导航控制器堆栈一样。
我创建了一个tabbar应用程序,并将navigationcontroller添加到任何不在rool level的viewcontroller中。然后放置一个按钮并用cntrl拖动push segue,并得到以下错误:终止应用程序,由于未捕获异常'NSGenericException',原因:'Push只有当源控制器由UINavigationController实例管理时才能使用segues。'如果我将navigationcontroller添加到位于根级别的viewcontroller,则不会出现问题。 –
因此,您只能将推送段添加到导航控制器中的视图。否则,'推'是没有意义的。 – Wain
我用图像更新了我的第一个条目,找出问题所在。 –
选项卡栏控制器中的每个选项卡都可以具有自定义视图控制器。您的自定义视图控制器可以作为导航控制器。
但是,在导航控制器,如果你想添加一个导航控制器可以说一个的tableview细胞的水龙头,你将不得不模态展示它的导航控制器上。您无法将导航控制器推入另一个导航控制器。
例如。
实例化对要呈现 YourAnotherRootVC * anotherVC =导航控制器根视图控制器[[YourAnotherRootVC的alloc] initWithNibName:@ “YourAnotherRootVC” 束:一个NSBundle mainBundle]];
实例化UiNavigationController UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:anotherVC];
将其呈现给当前导航控制器。 [self.navigationController presentModalViewController:navController animated:YES];
我用图像更新了我的第一个条目,找出问题所在。 –
你是什么意思的非rootViewController?任何视图控制器(可能是splitViewController除外)都可以嵌入到导航控制器中。 – rdelmar
但我做不到。我创建了一个tabbar应用程序,并将navigationcontroller添加到任何不在rool级别的viewcontroller中,并且出现以下错误:由于未捕获的异常'NSGenericException'导致应用程序终止,原因:'只能在源控制器由UINavigationController实例“。 –
随着您显示的结构,您将不得不模态地呈现导航控制器。解决问题的另一种方法是将SecondViewController嵌入到导航控制器中(如果不需要该外观,您可以隐藏导航栏)。 – rdelmar