在我的iPhone應用程序中,我有eah項目的唯一標識符。我希望當用戶登錄唯一標識符時可以在每個頁面上訪問。如何在標籤欄中切換不同標籤時管理NSUserDefaults?
我正在使用NSUserDefaults來做到這一點。但問題是,登錄不是第一頁。所以如果我訪問一些需要唯一標識的頁面,它會顯示「unknownkey」。
我該如何解決這個問題?
此外,我無法將登錄屏幕添加爲第一個屏幕,因爲用戶無需登錄即可訪問某些部分。
在我的iPhone應用程序中,我有eah項目的唯一標識符。我希望當用戶登錄唯一標識符時可以在每個頁面上訪問。如何在標籤欄中切換不同標籤時管理NSUserDefaults?
我正在使用NSUserDefaults來做到這一點。但問題是,登錄不是第一頁。所以如果我訪問一些需要唯一標識的頁面,它會顯示「unknownkey」。
我該如何解決這個問題?
此外,我無法將登錄屏幕添加爲第一個屏幕,因爲用戶無需登錄即可訪問某些部分。
嘗試像
if (![[NSUserDefaults standardUserDefaults] objectForKey: @"uniqueid"]) {
//...user is not logged in..
} else {
//...user is logged in...
}
我想這是一個設計問題,而不是編程問題?
您可以將您的登錄屏幕移動到啓動屏幕或將標籤欄保持原樣,直到用戶登錄,甚至以不同的方式重新設計整個事物。
如果登錄是必要的一切(例如,您的應用程序是一個Dropbox的客戶端),模態呈現登錄的viewController在應用程序啓動。
並且在成功登錄之前不要解僱它。
在您的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.
}
}
我已經編輯了我的問題。所以請檢查「編輯」部分。 – 2011-01-29 13:09:35
我的答案並沒有真正改變。你必須重新設計你的設計。 – pt2ph8 2011-01-29 13:15:51