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

时间:2011-11-24 13:31:46

标签: ios ios4 ios5

我在iOS 5中工作,在加载我的应用程序之前,我想打开另一个视图控制器,用户应该输入一些数据,例如.password,当密码匹配时,应用程序将被打开,我是没有得到如何做到这一点..我尝试了一些代码,我在下面写了

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

    return YES;
}

但我不知道这是否正确,所以朋友们,请帮帮我..

此致 Ranjit

2 个答案:

答案 0 :(得分:4)

你应该使用

[self.window setRootViewController:yourViewController]

而不是addSubview到您的窗口 顺便说一句,在询问之前搜索是一个好习惯。 ;)


如果要显示loginView或loadingView之类的视图,可以将其设置为rootViewController,加载后,可以重置rootViewController。
请注意,在ProjectAppDelegate.m中,您可以获得windowself.window,在其他子视图控制器中,您需要

[[[UIApplication sharedApplication] delegate] window]

获取主窗口。

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

您可以获得更多建议HERE


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

答案 1 :(得分:2)

您可以创建一些bool变量用于检查这是第一个开始还是另一个。存储此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;
}