试图围绕如何围绕UINavigationController构建应用程序来包装我的头。在我看来,大多数解释都假设应用总是从根控制器开始,然后从那里开始钻取,但我不清楚这是如何适应登录/注册步骤的情况。该结构是这样的:iPhone UINavigationController应用程序设计
Home page | Main app (typical nav hierarchy)
------------ |---------------------------------
Log in ----> Login page | App section 1
------------ | App section 2
Do login ------------------------> | etc.
<- Cancel |
|
Register -------------------> Register page |
----------------- |
Do registration ---> |
<- Cancel |
所以基本上我假设“主应用程序”控制器实际上应该是应用程序的根控制器,是否正确?在这种情况下,我不清楚如何处理坐在它前面的整个过程(基本上就像是一个与应用程序导航结构分离的导航结构)。 “主页”是在主应用程序上显示的模式控制器,还是用于登录/注册步骤的单独导航控制器,以便在登录后将其弹出来让我们回到应用程序根目录?
希望我只是过分简单的事情,只是还没有点击我。任何指针不胜感激。
编辑:所以这里是我结束了,这似乎为我所需要的。我有两个UINavigationControllers,它们都分配给IB中的MainWindow,并带有独立的起始NIB。一个是应用程序启动导航控制器(主页/登录/注册),另一个是主要的应用程序导航控制器。我的应用程序委托有这样的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window addSubview:startNavController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)activateMainApp {
[startNavController.view removeFromSuperview];
[window addSubview:appNavController.view];
[window makeKeyAndVisible];
}
登陆/注册的最后一步,我有这样的代码是什么叫应用程序的委托,使导航控制器之间的切换:
- (IBAction)continuePressed {
// Transfer control to the main app nav controller:
MyAppDelegate *app = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
[app activateMainApp];
[app release];
}
我怀疑我可以用一个导航控制器完成这个任务,但是这对我来说基于我的视图结构是合乎逻辑的,并且似乎可行,并且我最终将主视图作为应用导航控制器的根视图。任何额外的反馈意见,如果有什么骨头的话,赞赏。
你不应该在你的视图控制器中调用'[app release]',因为你没有保留它。 – jowie 2012-10-19 14:05:06
@bmosekau:为什么使用:'[window addSubview:startNavController.view];'而不是'self.window.rootViewController = startNavController'等等。 – 2013-08-06 06:38:16
@ user2568508邓诺。我不得不跳进我的时间机器,并拨回3年来回答这个问题。 – 2013-08-08 05:57:41