2011-11-02 88 views
2

我试图在首次启动应用程序时显示警告。如果稍后进入设置页面并希望再次看到此警报,我还想显示此警报。我想我可以在NSUserDefaults中设置一个布尔值。我不太清楚如何做到这一点(假设这种方法是正确的)。我想在applicationDidFinishLaunching:options,我可以得到钥匙@"FirstTimeLaunched"的值,并在applicationWillTerminate,我可以将该密钥的对象设置为NO。如果是这种情况,我如何首次将BOOL设为YESNSUserDefaults,只在第一次加载时执行某些操作

另外,我是否需要在didEnterBackground模式下将其设置为NO?谢谢。

回答

5

只是想它倒退,而不是期待YES,应用程序实际启动时设置一个变量,并在用户在设置中这样说时删除它。

在推出:

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunched"]) { 
    // show your only-one-time view 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasBeenLaunched"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

而当用户想再次看到它,只是删除键:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"hasBeenLaunched"]; 

当访问不存在的关键,NSUserDefaults将返回nil

+0

谢谢..我想在第一时间显示特定的控制器一次应用程序在设备上安装后,我怎么能实现这一点? ,任何帮助将不胜感激 –

+0

@MacGeek与上述相同的方法。 – pablasso

+0

请注意,不建议使用“synchronize”。 – danielhadar

0

首次启动应用程序,所以我认为您不需要将BOOL设置为NO。如果删除了应用程序,则会删除UserDefaults。我们把它当应用程序第一次启动应用程序didFinishLaunchingWithOptions:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTimeLaunched"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

如果您在applicationWillTerminate设置BoolNO,那么用户每次从托盘杀死应用程序,你会显示在应用程序启动警报。这又取决于您的业务需求。

+0

这是如何工作的?如果(myBool){//显示alert; }然后在applicationDidFinishLaunching中,它会第一次显示警报。下次启动应用程序后,它会不会再显示它,因为该值仍为YES? – Crystal

+0

if(myBool)//不显示警报。假设您在第一次启动应用程序时将bool设置为YES。否则显示警报。 – 0x8badf00d

0

我会采取相反的方法,并首先启动检查一个名为appHasLaunchedPreviously的键。

如果是,则绕过警报。 如果不是YES,则显示警报,并立即将其设置为下次使用。

相关问题