簡體   English   中英

僅在首次啟動應用程序時顯示UIAlertView

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM