[英]Showing an UIAlertView the first time the app is launched only
在讓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/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];
}
您從userdefauls第一次獲得了shouldAlert嗎? 我認為您應該檢查userdefaults是否存在,否則您的布爾值為NO或FALSE請檢查以下示例:
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
shouldAlert = YES; // define in the .h
if(userDef)
shouldAlert = [userDef boolForKey:@"ShowAlert"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.