我想在用户第一次打开我的应用程序时做一个UIalert,告诉他们有关基本功能的信息,但我不想让它每次打开应用程序或重新加载主屏幕时都会显示。我在其他应用程序中看到了这一点,但不知道最好的方法是什么。如果有人能指出我正确的方向,我们将不胜感激。
答案 0 :(得分:2)
在 - (void)applicationDidFinishLaunching :( UIApplication )应用 方法
中将其粘贴到App Delegate中BOOL hasRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FirstRun"];
if (!hasRunBefore) {
UIAlertView *firstRun = [[UIAlertView alloc] initWithTitle:@"Virgin" message:@"Hello World!!" delegate:nil cancelButtonTitle:@"Done" otherButtonTitles:nil];
[firstRun show];
[firstRun release];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstRun"];
}
else if (hasRunBefore) {
//can do some else if run before
}
基本上这样做是检查NSUserDefaults中的密钥“FirstRun”,类似地,可以将其修改为版本号或其他内容,例如,如果您希望在每次更新后发送新警报或其他内容。然后检查密钥是否没有(!hasRunBefore),如果它不存在(以前从未运行过),它会创建一个UIAlertView,然后为密钥设置YES(同时创建该密钥)
答案 1 :(得分:1)
如果他们之前启动了应用程序,请使用“[NSUserDefaults standardUserDefaults]”编写布尔值。
答案 2 :(得分:1)
我在主屏幕的viewDidLoad方法中使用NSUserDefaults。因此,每次应用程序启动并加载主屏幕时,它都会检查用户是否是第一次。
这就是我在我的应用中的表现:
- (void)viewDidLoad {
BOOL tempBOOL = [[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenOpeningAlert"];
if (!tempBOOL) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome To My App" message:@"This app will ... First you need to ..." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
[super viewDidLoad];
}
然后:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
Edit *editViewController = [[[Edit alloc] initWithNibName:@"Edit" bundle:nil]retain];
[self.navigationController presentModalViewController:editViewController animated:YES];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenOpeningAlert"];
[[NSUserDefaults standardUserDefaults] synchronize];
[editViewController release];
}