有一次UIAlert?

时间:2011-02-28 22:29:51

标签: iphone objective-c ios

我想在用户第一次打开我的应用程序时做一个UIalert,告诉他们有关基本功能的信息,但我不想让它每次打开应用程序或重新加载主屏幕时都会显示。我在其他应用程序中看到了这一点,但不知道最好的方法是什么。如果有人能指出我正确的方向,我们将不胜感激。

3 个答案:

答案 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];
}