如何设置首次启动iOS App

时间:2015-04-29 12:07:19

标签: ios objective-c xcode uinavigationcontroller

我想仅在我的应用首次启动时显示条款和条件。

目前我正在didFinishLaunchingWithOptions编写代码。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Handle launching from a notification
 if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
    NSLog(@"Already Run");
}
else
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];

FirstPage * termsView = [storyboard instantiateViewControllerWithIdentifier:@"FirstPage"];

    UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:termsView];
    self.window.rootViewController=navController;

    // This is the first launch ever
}
}

UPDATE ::

当我的应用程序第一次在TERMSandCONDITIONSVC中启动时,我想要一个Accept按钮。当用户Accepts凝聚时,只有他允许进一步。

以上代码的问题:

当我第一次运行我的应用程序TermsandCondition向我显示时。我按下主页按钮应用程序进入后台。再次打开来自启动器的应用程序,TermsandCondtion显示。

但是,当我将我的应用程序置于背景中时,通过双击主页按钮将其从背景中删除并运行应用程序,我将直接转移到我的主屏幕。

没有条款和条件。

我如何从中恢复。

3 个答案:

答案 0 :(得分:1)

您将获得黑屏,因为没有将viewcontroller设置为root视图。

做一件事也将其他部分写入 IF 部分,并将控制器从术语页面更改为第二页。

尝试将下面的代码放在didFinishLaunch中并检查。

datum_poruchy
    ^datum_poruchy

更新: 只需拖动以下行即可同意按钮的点击事件,并从didFinishlaunching中删除这一行。

self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

UINavigationController *navController

 if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
    NSLog(@"Already Run");
    SecondView *secondView = [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];
    navController=[[UINavigationController alloc]initWithRootViewController:secondView];

}
else
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];

     TermsView *termsView = [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];
    navController=[[UINavigationController alloc]initWithRootViewController:termsView];

// This is the first launch ever
    }
}
self.window.rootViewController=navController;
 return YES;

答案 1 :(得分:1)

您正以错误的方式实例化termsView。在您的故事板中为FirstPage视图控制器指定一个FirstPage的storyboardID。

然后在didFinishLaunchingWithOptions执行以下操作

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];

FirstPage * termsView = [storyboard instantiateViewControllerWithIdentifier:@"FirstPage"];

这将找到您的主故事板,然后根据提供的storyboardID(即termsView)使用ViewController实例化FirstPage

答案 2 :(得分:1)

如果您想首次启动iOS应用程序。使用此代码,条款和条件将仅在应用程序首次启动时显示或显示。

  if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
    {
        NSLog(@"Already Run");
    }
    else
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        FirstPage *termsView = [[FirstPage alloc]init];

        UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:termsView];
        self.window.rootViewController=navController;

        // This is the first launch ever
UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
//first goto storyboard and give storyboard id "TermsConditionVC" to TermsConditionVC 
        TermsConditionVC *firstVC = [story instantiateViewControllerWithIdentifier:@"TermsConditionVC"];
        self.window.rootViewController =firstVC;
    }

完整文章和完整流程设置您的第一个计时器iOS应用程序启动访问以下链接
http://findnerd.com/list/view/How-to-setup-first-time-launch-of-an-iOS-App/2770/