我是否在第一次玩UIAlertView时出错?在我的didFinishLaunchingWithOptions中,我的MainViewController被实例化。所以在MainViewController的viewDidLoad中,我这样做:
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];
}
当我在设备上试用它时,如果我双击回家,并且点击应用旁边的减号将其从背景模式中移除(我认为双击是正确的吗?),它不起作用。因为我这样做后,再次出现弹出窗口。如果我不这样做,警报只显示一次。这是预期的行为吗?非常感谢。
答案 0 :(得分:0)
尝试使用整数(0/1)。 BOOL也遇到了一些问题。
setInteger:forKey:
integerForKey:
修改强> 尝试在启动/显示警报之前更新默认值 请更新您的变量名称。你的代码是当前名称的废话。
试试这个:
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];
}
答案 1 :(得分:0)
您是否第一次从userdefaults获得了您的shouldAlert? 我认为你应该检查用户默认是否存在,否则你的bool是NO或FALSE 检查这个例子:
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
shouldAlert = YES; // define in the .h
if(userDef)
shouldAlert = [userDef boolForKey:@"ShowAlert"];