UINavigationController显示标题,但不显示视图

时间:2010-11-20 15:27:47

标签: iphone ios uinavigationcontroller views

在我的应用程序中,我有一个mainViewController,我正试图用来保存和控制我的应用程序的几个主视图。我首先加载了一个启动画面,但是我想要它,以便当用户点击启动画面时,它们会被带到主菜单。

我的启动画面部分工作正常,但我在使用NavigationController部件时遇到了问题。


[splashView.view removeFromSuperview];

mainMenu = [[menuScreenViewController alloc] initWithNibName:@“menuScreenViewController”bundle:nil];   mainMenu.title = @“菜单”;   mainNavController = [[UINavigationController alloc] init];   [mainNavController pushViewController:mainMenu animated:NO];

[MAINVC.view addSubview:mainNavController.view];

[mainMenu发布];   [mainNavController release];

[splashView release];


(MAINVC在别处定义为我的主视图控制器)。

无论如何,当我这样做时,我得到标题为“菜单”的导航控制器,但mainMenu视图控制器中包含的视图不会显示在导航控制器中。

如果我只是添加mainMenu的视图,那么它就是MAINVC.view的子视图,它会正确显示。

有关如何让它显示在我的导航控制器中的任何建议吗?

1 个答案:

答案 0 :(得分:0)

avery,您将需要使用mainMenu作为其根视图控制器来初始化导航控制器,而不是仅仅初始化然后再推送新视图。它需要根视图控制器才能工作。

mainMenu = [[menuScreenViewController alloc] initWithNibName:@"menuScreenViewController" bundle:nil];
mainMenu.title = @"Menu";
mainNavController = [[UINavigationController alloc] initWithRootViewController:mainMenu];

//ADD MODAL SPLASH SCREEN HERE

[MAINVC.view addSubview:mainNavController.view];

[mainMenu release];
[mainNavController release];

[splashView release];

如上面的评论所示,我建议你以这种方式初始化,然后将你的启动画面作为modalViewController添加到导航控制器。当您点击触摸屏时,这将防止您在mainMenu初始化时可能出现的任何延迟。然后,当模态视图接收到触摸时,您可以调用:

[self.parentViewController dismissModalViewControllerAnimated:YES];