2011-11-03 128 views
1

我是否在使UIAlertView仅第一次播放时出错?在我的didFinishLaunchingWithOptions中,我的MainViewController被实例化。因此,在MainViewController的viewDidLoad,我这样做:仅在第一次启动应用程序时显示UIAlertView

BOOL shouldAlert = [[NSUserDefaults standardUserDefaults] boolForKey:@"ShowAlert"]; 
if (!shouldAlert) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAlert" message:@"Some text here" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ShowAlert"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

当我尝试在设备上,它不会,如果我双击Home工作,并击中减号应用从后台删除它旁边模式(我认为这是双击是正确的?)。因为我这样做后,弹出窗口再次出现。如果我不这样做,那么警报只会显示一次。这是预期的行为?谢谢一堆。

+0

是否行得通?如果是这样,你可能没有做错任何事情。从这里看起来很不错,只是你的'shouldAlert'变量读不好。就个人而言,我会将其改为'hasOpenedPreviously',或者留下名字并将所有布尔值转换。 –

+0

@Patrick Perini不,它不工作,因为当我双击家里,然后从后台模式删除应用程序,警报弹出备份。我应该将其添加到我的帖子中。 – Crystal

+0

这很奇怪,因为终止应用程序不应该混淆'NSUserDefaults'。我会尝试一些关于'NSUserDefaults'的日志语句,以获得更多关于你的布尔值是否坚持的信息。 –

回答

0

尝试使用整数(0/1)。 BOOL也有一些问题。

setInteger:forKey: 
integerForKey: 

EDIT 尝试INITING /表示警报之前更新所述默认值。
并请更新您的变量名称。你的代码与他们当前的名字是无稽之谈。

试试这个:

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
BOOL hasAlreadyBeenLaunched = [defaults boolForKey:@"HasAlreadyBeenLaunched"]; 

if (!hasAlreadyBeenLaunched) { 
    [defaults setBool:YES forKey:@"HasAlreadyBeenLaunched"]; 
    [defaults synchronize]; 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAlert" message:@"Some text here" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
} 
+0

我试过但同样的问题。 – Crystal

+0

@水晶:看我的编辑。 – Oliver

+0

@水晶:我的编辑帮助? – Oliver

0

你从你的userdefauls shouldAlert第一次? 我想你应该检查是否存在userdefaults否则你的布尔是NO或FALSE 检查这个例子:

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults]; 
shouldAlert = YES; // define in the .h 
if(userDef) 
shouldAlert = [userDef boolForKey:@"ShowAlert"]; 
+0

这是疯狂的罗嗦,应该没关系。这是特别无关的,因为她可以(准确)记录'[[NSUserDefaults standardUserDefaults] boolForKey:@“ShowAlert”]的返回值;'' –

相关问题