2011-11-03 138 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」]的返回值;'' –

相關問題