如何在iOS应用程序启动之前打开一个ViewController

我在iOS 5中工作,并加载我的应用程序之前,我想要打开另一个视图控制器,用户应该input一些数据,例如密码和密码匹配,应用程序将被打开,我不明白如何做这个..我尝试了一些代码,我已经写在下面

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if(somecondition) { ViewController *View =[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; [_window addSubview:View.view]; } return YES; } 

但是我不知道这是不是一个正确的方式,所以朋友们,请帮助我..

关心Ranjit

你可以创build一些boolvariables来检查这是第一个开始或另一个。 存储这个bool的最好的地方是NSUserDefaults。 那么,如果这是第一次启动,那么显示你的LoginViewController,如果没有 – 执行常规代码:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIViewController *startVC = nil; if (isFirstLaunch){ startVC = [[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil] autorelease]; } else{ startVC = [[[WorkspaceViewController alloc] initWithNibName:@"WorkspaceView" bundle:nil] autorelease]; } navController = [[UINavigationController alloc] initWithRootViewController:startVC]; [self.window makeKeyAndVisible]; [self.window addSubview:navController.view]; return YES; } 

你应该使用

 [self.window setRootViewController:yourViewController] 

而不是addSubview到你的窗口。
顺便问一下,寻求是一个好习惯。 ;)


如果你想显示一个像loginView或loadingView这样的视图,你可以将它设置为你的rootViewController,在加载的时候,你可以重置你的rootViewController。
注意,在你的ProjectAppDelegate.m中,你可以通过self.window获得window ,而在其他子视图控制器中,你需要

 [[[UIApplication sharedApplication] delegate] window] 

得到你的主窗口。

满足您的要求的另一个简单方法是,您可以在展示您的应用程序之前展示一个modalView 。 完成后closures它,然后启动你的应用程序。

你可以在这里得到更多的build议。


顺便说一句,对不起,我没有得到您的意见通知,当你在其他用户评论区前几天写。 :(当你在其他地方发表评论时,你应该在用户名之前加@