【问题标题】:How to open a ViewController before application starts in iOS如何在 iOS 中启动应用程序之前打开 ViewController
【发布时间】:2012-01-05 16:07:17
【问题描述】:

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

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

    return YES;
}

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

问候 兰吉特

【问题讨论】:

  • 我编辑了答案,也许这就是你现在真正想要的。 :)
  • 嘿,不,kjuly..我已经得到了答案

标签: ios ios4 ios5


【解决方案1】:

你应该使用

[self.window setRootViewController:yourViewController]

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


如果你想显示类似 loginView 或 loadingView 的视图,你可以将它设置为你的 rootViewController,当加载完成后,你可以重置你的 rootViewController。
请注意,在您的 ProjectAppDelegate.m 中,您可以获得 window 通过self.window,在其他子视图控制器中,您需要

[[[UIApplication sharedApplication] delegate] window]

获取您的主窗口。

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

您可以得到更多建议HERE


顺便说一句,很抱歉几天前您在其他用户评论区写信时没有收到您的cmets通知。 :( 在其他地方发表评论时,应在用户名前添加@

【讨论】:

  • @Ranjit 你还需要在return YES; 之前添加[self.window makeKeyAndVisible];。您将在 xCode 的默认 view based application 项目中看到演示。
  • @Ranjit File -> New Project -> Application -> Single View Application.
  • 嘿,在 iOS5 中,这一切都不是必需的,通过上面的一行代码,我可以在我的应用程序启动之前打开视图控制器。现在我想知道..进入该视图后如何我为我的应用加注星标
  • @Ranjit iOS5.0不需要?对不起。:p 但仅适用于 iOS5?我认为兼容iOS4.0是必要的。 ;)
  • @Ranjit 你的意思是运行测试应用程序??? Cmd + B 构建和 Cmd + R 运行。也许我误解了..:P
【解决方案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;
}

【讨论】:

  • 嘿铍,在我的 if 条件下,我写了这行代码 [self.window setRootViewController:yourViewController] 并打开了一个视图控制器,但是现在进入这个视图控制器后,我应该如何启动我的应用,任何建议
  • [[(YourDelegate*)[[UIApplication sharedApplication] delegate] window] setRootViewController:yourAnotherViewController];
  • 嘿,但我没有任何视图控制器,我通过在 iOS 5 中选择“标签栏应用程序”选项创建了我的应用程序
  • 标签栏也是视图控制器。
  • 但我无法调用那个 TabBar...?如何调用它
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 2016-10-04
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
相关资源
最近更新 更多