【发布时间】:2011-02-22 00:57:10
【问题描述】:
我只想在第一次安装和打开应用时在视图控制器上显示帮助消息。
我有什么方法可以做到这一点吗?
【问题讨论】:
标签: ios cocoa-touch uiviewcontroller
我只想在第一次安装和打开应用时在视图控制器上显示帮助消息。
我有什么方法可以做到这一点吗?
【问题讨论】:
标签: ios cocoa-touch uiviewcontroller
您可以显示一次帮助消息,然后在NSUserDefaults 中存储一个布尔值以指示它不应再次显示:
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
BOOL appHasBeenLaunchedBefore = [userDefaults boolForKey:@"HasBeenLaunched"];
if (!appHasBeenLaunchedBefore)
{
[self showHelpMessage];
}
[userDefaults setBool:YES forKey:"HasBeenLaunched"];
【讨论】:
使用 Grand Central Dispatch 的 dispatch_once() 并检查一些持久性存储。
static dispatch_once_t pred;
dispatch_once(&pred,^{
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
BOOL hasLaunched = [userDefaults boolForKey:kAppHasLaunched];
if (!hasLaunched) {
[self showFirstLaunchMessage];
[userDefaults setBool:YES forKey:kAppHasLaunched];
}
});
这是确保代码在每次启动时仅在您的应用中运行一次的最简单方法(在这种情况下,该块将仅执行一次)。有关这方面的更多信息,请参阅the Grand Central Dispatch Reference。在此块中,您只需检查一些持久性存储,例如您的首选项,以查看您的应用是否曾经启动过,并根据需要显示一条消息。
【讨论】:
在用户默认值中使用一个键。例如:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
BOOL launchedBefore = [userDefaults boolForKey:@"hasRunBefore"];
if(!hasRunBefore)
{
NSLog(@"this is my first run");
[userDefaults setBool:YES forKey:@"hasRunBefore"];
}
用户默认设置由 iTunes 备份,因此通常是用户的首次启动,而不是每台设备的首次启动。
编辑:这与 e.James 在我之前给出的答案明确相同。 “其他答案已发布”栏未能出现。我将把它留给示例代码,但第一个答案不值得称赞。
【讨论】:
;) 但是 +1 提到了 iTunes 备份。我没想到。