检测用户是否在iOS中第一次打开了View

时间:2013-01-29 02:43:11

标签: ios iphone view nsuserdefaults

我知道如何使用NSUserDefault检测应用程序是否第一次打开:

BOOL didRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"didRunBefore"];

     if (!didRunBefore) {
      //Your Launch Code
      [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"didRunBefore"];
      [[NSUserDefaults standardUserDefaults] synchronize];

       }

问题:我想要一个警告永远查看解释它包含哪些功能,只在首次启动应用时打开此警报?

4 个答案:

答案 0 :(得分:10)

作为OOP程序员,您可以制作一个通用的公共方法。

+ (BOOL)checkWhetherRunBefore:(NSString *)key
{
    return [[NSUserDefaults standardUserDefaults] boolForKey:key];
} 

+ (void)hasRunForMyClass:(NSString *)key
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

在ViewController中,您可以像这样在viewWillAppear或viewDidAppear中进行编码:

- (void)viewWillAppear
{
    if(![HelpController checkWhetherRunBefore:NSStringFromClass([self class])])
    {
        //do your thing
        [HelpController hasRunForMyClass:NSStringFromClass([self class])]
    }

}

答案 1 :(得分:1)

您只需将代码放入viewDidLoad

即可

当app加载您的视图时,viewDidLoad只会运行一次。 (低内存除外)

下次在viewDidLoad中再次加载视图时,可以检查bool didRunBefore

答案 2 :(得分:1)

您可以使用任何您想要的密钥。

FirstViewController

BOOL didRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FirstViewController_didRunBefore"];

if (!didRunBefore) {
    //Your Launch Code
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstViewController_didRunBefore"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

SecondViewController

BOOL didRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"SecondViewController_didRunBefore"];

if (!didRunBefore) {
    //Your Launch Code
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SecondViewController_didRunBefore"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

答案 3 :(得分:0)

你必须要检测应用程序首次启动,你可以检测到这样的

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
if (![defaults objectForKey:@"firstRun"])
  [defaults setObject:[NSDate date] forKey:@"firstRun"];

[[NSUserDefaults standardUserDefaults] synchronize];
You can then test for it later...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];        
if([defaults objectForKey:@"firstRun"])           
{
  // do something or not...
}