如何导航 navigationcontroller rootviewcontrollr 子视图控制器

Posted

技术标签:

【中文标题】如何导航 navigationcontroller rootviewcontrollr 子视图控制器【英文标题】:How to navigate the navigationcontroller rootviewcontrollr subview controller 【发布时间】:2015-04-08 04:16:04 【问题描述】:

在我的应用程序中,我提到了带有 2 个标签 tab1 和 tab2 的标签栏控制器。每个标签都有带有根视图控制器的导航视图控制器。我的场景如下所示

tab1 -> viewcontroller1 (navigationcontroller rootviewcontroller) -> viewcontroller2.

所以现在我想直接从应用程序委托移动到视图控制器2。这怎么可能。

我在应用程序委托中这样做了。但它正在移动到 viewcontroller1。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main"
                                                         bundle: nil];
self.tabbarController = [mainStoryboard instantiateViewControllerWithIdentifier:@"tabbarcontroller"];
[self.tabbarController setSelectedIndex:1];
 viewcontroller2 *view =(viewcontroller2 *) [mainStoryboard instantiateViewControllerWithIdentifier:@"view2"];

[self.tabbarController.navigationController pushViewController:view animated:YES];
self.window.rootViewController=self.tabbarController;

【问题讨论】:

你能把viewcontroller2推到navigationController的顶视图吗? in appDelegate --> 确实使用选项 write 完成了启动:Splash *vc2 = [[Splash alloc] initWithNibName:@"Splash" bundle:nil]; self.navigationController = [[UINavigationController alloc] initWithRootViewController:vc2]; setSelectedIndex:2 我认为它会移动到第二个视图控制器 你的标签栏控制器没有导航控制器,所以 self.tabbarController.navigationController 为 nil。 self.tabbarcontroller.navigationcontroller 是只读的。 【参考方案1】:
Tab1 -> Viewcontroller1(navigationcontroller rootviewcontroller) -> Viewcontroller2

这种方法我用过几次

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main"
                                                         bundle: nil];
self.tabbarController = [mainStoryboard instantiateViewControllerWithIdentifier:@"tabbarcontroller"];
[self.tabbarController setSelectedIndex:1];
viewcontroller1 *view1 =(viewcontroller1 *) [mainStoryboard instantiateViewContro1llerWithIdentifier:@"view1"];
viewcontroller2 *view2 =(viewcontroller2 *) [mainStoryboard instantiateViewControllerWithIdentifier:@"view2"];

[self.tabbarController.navigationController pushViewController:view1 animated:NO];
[self.tabbarController.navigationController pushViewController:view2 animated:YES];

self.window.rootViewController=self.tabbarController;

【讨论】:

我也对 viewcontroller2 做了同样的事情。它对你有用吗?我需要直接从 appdelegate 转移到 viewcontroller 2。 是的,但是我的和你的代码有一点点不同,我先推了viewController1,然后推了2。 我也像你一样尝试过,但它显示 viewcontroller1。直接我想显示 viewcontroller 2。 添加控制器后检查 self.tabbarController.navigationController.viewControllers 的值.. 我在storyboard中做了那个标签。

以上是关于如何导航 navigationcontroller rootviewcontrollr 子视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何导航 navigationcontroller rootviewcontrollr 子视图控制器

如何在不使用 NavigationController 的情况下从一个视图导航到另一个视图?

如何在 tableview 搜索栏中获取对 navigationcontroller 的引用?

如何更改导航栏默认返回按钮

通过 NavigationController-TabBarController-NavigationController 以编程方式导航

如何操作导航控制器?