2013-04-23 55 views
0

我想在用戶進入應用程序之前實現登錄屏幕(當用戶註冊時我記得NSUserDefaults中的某個鍵,並且下次啓動應用程序時,如果NSUserDefaults中有鍵,我需要跳過登錄屏幕)。我把我的LoginController代碼放在裏面,它可以工作,但它總是顯示Login一會兒,然後跳轉到AppController。 (我嘗試在viewDidLoad但後來不工作)。如何避免LoginScreen跳至下一個之前的短暫顯示?如何在從內存密鑰讀取時跳轉到下一跳之前避免短暫顯示LoginScreen?

- (void) viewDidAppear:(BOOL)animated{ 
    // ***************** reading key from memory ************************** 
    NSString * key = [[NSUserDefaults standardUserDefaults] 
         stringForKey:@"key"]; 
    if(key != nil){ 
     [self performSegueWithIdentifier:@"login" sender:self]; 
    } 
    // ********************************************************************** 
} 

如果沒有關鍵用戶通過

LoginController =>AppController

如果有關鍵它應該給用戶看起來像

AppController

但此刻如果有鑰匙是

LoginController(很短的時間)=>AppController

回答

0

我會做的是讓你的AppController中爲你的根視圖控制器,並在您viewDidLoad中有檢查,以查看用戶是否在被記錄下來。如果沒有,你可以提供一個模式視圖控制器(不帶動畫)來顯示您的登錄屏幕。對於用戶來說,他們看起來像直接進入登錄屏幕。

+0

我在我的應用程序中首先使用了這種方法,但當我想「重置」導航堆棧並從頭再次開始(註銷/登錄後)時,它不再工作了。我結束了切換主窗口.rootController根據登錄狀態設置適當的主視圖控制器。 (但我還不確定這是否是最好的方法) – nanako 2013-04-24 04:59:06