如何跳过根视图并直接在UINavigationController层次结构中显示第二个视图?

时间:2015-05-03 23:43:22

标签: ios objective-c uinavigationcontroller

我正在ios上创建一个消息传递应用程序,它将为不同类型的消息提供多个文件夹。我将使用导航控制器结构,并希望根视图是用户可以选择要查看的文件夹的位置。但是,当我第一次看到导航控制器时,我希望收件箱文件夹视图直接显示(即绕过根视图)。苹果邮件应用程序具有类似的结构(打开时启动收件箱)。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

这实际上取决于第一个视图控制器和第二个视图控制器之间的关系。如果你想做这样的事情,为什么不把你的第二个视图控制器作为 UINavigationController 的根控制器。

无论如何,如果您仍想按照描述的方式进行操作,则只需使用根视图控制器中的viewDidLoad方法指向第二个视图控制器即可。但是,它会使UI看起来很笨拙。

答案 1 :(得分:0)

尝试使用此代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

ViewController *controller1 = [board instantiateViewControllerWithIdentifier:@"firstView"];

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:controller1];

SecondViewController *secondView = [board instantiateViewControllerWithIdentifier:@"secondView"];

[controller1 addChildViewController:secondView]; 

[self.window setRootViewController:navController];

return YES;
}

希望这会对你有所帮助。

答案 2 :(得分:0)

将此代码写入AppDelegate.m的 didFinishLaunchingWithOptions

UIStoryboard *MainStoryboard = [UIStoryboard storyboardWithName:@"Main"
                                                         bundle: nil];
UINavigationController *controller = (UINavigationController*)[MainStoryboard
                                                               instantiateViewControllerWithIdentifier: @"YourStoryBoardID"];

NeededViewController *need=[MainStoryboard instantiateViewControllerWithIdentifier:@"YourStoryboardID"];         
[controller setViewControllers:[NSArray arrayWithObject:need] animated:YES];
self.window.rootViewController=controller;