【发布时间】:2011-09-13 02:40:48
【问题描述】:
我今天遇到了一个让我想知道最佳实践的情况。对于您将如何处理这个简化的示例,我将不胜感激:
假设我们有一个需要登录才能使用的应用。所以,我们有几个视图和相应的视图控制器:LoginView 和 MainView。 MainView 是导航控制器的根视图和根控制器。 LoginView 是一个允许用户登录的视图。
所以,第一次启动应用程序时,应该显示 LoginView,然后在登录完成后显示 MainView。在后续启动时,只会显示 MainView。
一种方法是在 applicationDidFinishLaunching 中处理所有这些:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *rootController = [[MainView alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
if ( notLoggedIn ) {
LoginView *vc = [[LoginView alloc] initWithNibName:@"LoginView" bundle:nil];
[rootController presentModalViewController:vc animated:NO];
}
return YES;
}
如果能够在单独的、专用的“根”视图控制器中处理这个问题,那就太好了。这个控制器将由 AppDelegate 加载,然后它会加载合适的视图控制器。有人可以就这是否是更好的方法提供建议吗?如果是这样,该怎么做?
在这种情况下,您会推荐其他方法吗?
谢谢大家。
【问题讨论】:
标签: iphone ios uiviewcontroller