2011-01-29 46 views
0

在我的iPhone應用程序中,我有eah項目的唯一標識符。我希望當用戶登錄唯一標識符時可以在每個頁面上訪問。如何在標籤欄中切換不同標籤時管理NSUserDefaults?

我正在使用NSUserDefaults來做到這一點。但問題是,登錄不是第一頁。所以如果我訪問一些需要唯一標識的頁面,它會顯示「unknownkey」。

我該如何解決這個問題?

此外,我無法將登錄屏幕添加爲第一個屏幕,因爲用戶無需登錄即可訪問某些部分。

回答

1

嘗試像

if (![[NSUserDefaults standardUserDefaults] objectForKey: @"uniqueid"]) { 
    //...user is not logged in.. 
} else { 
    //...user is logged in... 
} 
0

我想這是一個設計問題,而不是編程問題?

您可以將您的登錄屏幕移動到啓動屏幕或將標籤欄保持原樣,直到用戶登錄,甚至以不同的方式重新設計整個事物。

+0

我已經編輯了我的問題。所以請檢查「編輯」部分。 – 2011-01-29 13:09:35

+0

我的答案並沒有真正改變。你必須重新設計你的設計。 – pt2ph8 2011-01-29 13:15:51

0

如果登錄是必要的一切(例如,您的應用程序是一個Dropbox的客戶端),模態呈現登錄的viewController在應用程序啓動。
並且在成功登錄之前不要解僱它。

0

在您的RootViewController的viewDidLoad方法中,您需要通過IF語句檢查保存的NSUserDefault。簡單。

-(void)viewDidLoad { 

    if(![[NSUserDefaults standardDefaults] objectForKey:@"uniqueid"]) { 
    // here you'll want to present a view modally inside a new navigation controller. 

    LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 

    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:lvc]; 

    [self.navigationController presentModalViewController:controller animated:YES]; 

} else { 

    // this is where you'd set up the client if the user is already logged in. 

    } 
}