2012-03-19 45 views
0

我正在設計一個目標C中的iphone應用程序。 截至目前,我的應用程序開始處有一個UINavigationController,其餘的導航都是從它處理的。如何在基於導航的應用程序中管理登錄視圖?

現在我想在應用程序加載時插入登錄屏幕。

如何讓它獨立於應用程序的其餘部分? 即截至目前,我創建了一個LoginViewController並將其添加到我的應用的NavigationViewController 。當用戶成功登錄時,應用程序會繼續將下一個屏幕推入導航控制器。 但這種方法的問題是,我仍然可以回到導航項目的初始登錄屏幕。

我嘗試在登錄後從第一個屏幕隱藏導航欄,但它會從每個後續屏幕中刪除導航欄。

我能想到的唯一工作解決方案是,我應該手動在導航欄中隱藏導航欄,並使其在隨後的屏幕中可見。 有沒有其他的理智方法?

+0

您可以在第一個控制器的viewDidLoad中顯示LoginScreen,並在登錄後解除它。 – 2012-03-19 06:11:52

回答

2

我可能會做你的導航控制器不顧登錄界面,然後提出使用presentModalViewController登錄屏幕:動畫:

0

出示LoginViewController在viewDidLoad爲的navigationController一旦用戶登錄您關閉它,然後繼續只要你想要的屏幕流量。你也可以在NSUserDefault中存儲該用戶登錄你的應用程序,這樣你可以檢查這個值,並提交loginView,以防他沒有登錄,否則你會像正常顯示導航屏幕

0

如果用戶還沒有登錄的應用程序顯示LoginViewController並且不允許用戶到那時去導航控制器。一旦登錄不顯示LoginViewController直接顯示導航控制器,以便用戶不必一次又一次簽名。要存儲用戶登錄信息,請使用NSUserDefaults。相應地在加載應用程序和顯示控制器時檢索信息。

乾杯

0

您需要UserDefaults存儲一些值 - 自動登錄/ DID登錄和當應用程序是啓動你檢查這個值如果系統用戶isn`t u需要創建登錄視圖控制器和modaly目前它。 您的第一個視圖之前出現u需要這樣的事 -

BOOL didLogin = [[NSUserDefaults standardUserDefaults]boolForKey:@"isLogin"]; 
if (!didLogin) { 
    LoginViewController *loginVC = [[LoginViewController alloc]init]; 
    [self presentModalViewController:loginVC animated:NO]; 
} 

,當用戶登錄您需要保存在用戶的默認值

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isLogin"]; 

如果你VANT自動登錄功能,您必須存儲密碼鑰匙扣

0

我建議在firstviewcontroller隱藏後退按鈕,並取消隱藏所有視圖控制器。

-(void)viewWillAppear:(BOOL)animated { 
    self.navigationItem.hidesBackButton=YES; 
} 

否則另一種解決方案是,存在於您的firstviewcontroller的viewDidLoad方法和作爲登錄的loginviewcontroller完成解僱登錄按鈕所呈現的LoginController。

即使它的標準方法來實現,所有具有登錄設施的應用程序都會有這種類型的流程。

希望這會幫助你。

相關問題