2011-11-02 118 views
2

我試圖在首次啓動應用程序時顯示警告。如果稍後進入設置頁面並希望再次看到此警報,我還想顯示此警報。我想我可以在NSUserDefaults中設置一個布爾值。我不太清楚如何做到這一點(假設這種方法是正確的)。我想在applicationDidFinishLaunching:options,我可以得到鑰匙@"FirstTimeLaunched"的值,並在applicationWillTerminate,我可以將該密鑰的對象設置爲NO。如果是這種情況,我如何首次將BOOL設爲YESNSUserDefaults,只在第一次加載時執行某些操作

另外,我是否需要在didEnterBackground模式下將其設置爲NO?謝謝。

回答

5

只是想它倒退,而不是期待YES,應用程序實際啓動時設置一個變量,並在用戶在設置中這樣說時刪除它。

在推出:

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunched"]) { 
    // show your only-one-time view 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasBeenLaunched"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

而當用戶想再次看到它,只是刪除鍵:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"hasBeenLaunched"]; 

當訪問不存在的關鍵,NSUserDefaults將返回nil

+0

謝謝..我想在第一時間顯示特定的控制器一次應用程序在設備上安裝後,我怎麼能實現這一點? ,任何幫助將不勝感激 –

+0

@MacGeek與上述相同的方法。 – pablasso

+0

請注意,不建議使用「synchronize」。 – danielhadar

0

首次啓動應用程序,所以我認爲您不需要將BOOL設置爲NO。如果刪除了應用程序,則會刪除UserDefaults。我們把它當應用程序第一次啓動應用程序didFinishLaunchingWithOptions:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTimeLaunched"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

如果您在applicationWillTerminate設置BoolNO,那麼用戶每次從托盤殺死應用程序,你會顯示在應用程序啓動警報。這又取決於您的業務需求。

+0

這是如何工作的?如果(myBool){//顯示alert; }然後在applicationDidFinishLaunching中,它會第一次顯示警報。下次啓動應用程序後,它會不會再顯示它,因爲該值仍爲YES? – Crystal

+0

if(myBool)//不顯示警報。假設您在第一次啓動應用程序時將bool設置爲YES。否則顯示警報。 – 0x8badf00d

0

我會採取相反的方法,並首先啓動檢查一個名爲appHasLaunchedPreviously的鍵。

如果是,則繞過警報。 如果不是YES,則顯示警報,並立即將其設置爲下次使用。

相關問題