2011-12-14 30 views
2

我有一個只能在用戶通過身份驗證時才能使用的應用程序。特別是,我創建了兩個不同的UIViewController。第一個稱爲LoginViewController,第二個稱爲HomeViewController。在applicationDidFinishLaunching:方法,LoginViewController被創建,然後添加到rootViewController屬性是這樣的:管理登錄/註銷轉換的建議

LoginViewController* loginCtr = ... // alloc and initiWithNibName... 
self.window.rootViewController = loginCTr; 
[loginCtr release]; 

Whitin LoginViewController我創建的執行登錄的方法。當用戶通過身份驗證時,我執行一個名爲performLogin的方法。

- (void)performLogin 
{ 
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [appDelegate switchView];  
} 

其中swicthView方法已被應用程序委託類內部實現。

- (void)switchView 
{ 
    if(VIEW_TYPE == kLogin) // Display Login 
    { 
    // create a new LoginViewController and assign it to rootViewController 
    } 

    else // Display Home 
    { 
    // create a new HomeViewController and assign it to rootViewController 
    } 
} 

鑑於前面的代碼,是有可能實現一個更優雅的機制來管理登入/登出過渡或沒有這種類型的實現可以被認爲是有價值的解決方案?

預先感謝您。

回答

1

另一種選擇是,我將HomeViewController設置爲rootViewController。在viewDidLoad或viewDidAppear方法中(在HomeViewController上顯示任何信息之前),我將檢查用戶是否具有登錄憑證。如果不是,我將顯示loginViewController作爲請求用戶登錄憑據的模式。在這種情況下,我不需要更改窗口的rootViewController。