1

在自定义UIViewController,如果我有一个构件UINavigationController我与self初始化为根视图,这样的:根视图控制器和模态对话框

navController = [[UINavigationController alloc] initWithRootViewController:self]; 

然后呈现一个模态对话框不隐藏的标签在屏幕底部的酒吧。结果是,如果用户在显示模式对话框时切换到不同的选项卡,当他们弹回到显示模态对话框的选项卡时,即使我打电话,随后对presentModalViewController的调用也不会显示模态对话框dismissModalViewControllerAnimated作为制表符切换的结果。

如果我初始化出设定self作为根控制器的UINavigationController,

navigationController = [[UINavigationController alloc] init]; 

然后按预期标签栏被隐藏。我在程序中改变了一些东西,这对我来说不再是一个问题,但我不确定我是否明白为什么会发生这种情况。如果导航控制器将要显示模态对话框,那么以self为根的导航控制器被认为是不好的做法?

回答

1

我从来没有加入自己的根控制器

我总是有一些控制器,得到一个NavigationController.view添加到自身。 然后,将在导航层次结构中显示的第一个ViewController作为rootViewController添加。这只是“第一页”的另一个词(一开始所有的命名都可能相当混乱)。

实例MyProjectAppDelegate.m:

UITableViewController *startScreen = [[UITableViewController alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:startScreen]; 
[window addSubview:navController.view]; 

你也应该不会的UITabBarController,如果你想有一个navigationcontroller“页”,您可以建立一个自定义的UITabBarController标签栏混合的UINavigationController。

这将告诉你如何http://github.com/wiredbob/NavTab

(我有很大的问题,在理解这一切的视图/控制器筑巢自己和这个项目确实取得了区别。你可以说这是代码,我真的学到了如何将程序进行iPhone/Mac与:DD)

+0

感谢您的链接。我会看看这个代码! – Tony 2010-06-12 02:30:37