2014-08-27 108 views
0

的AppDelegate導航返回LoginScreen註銷時選擇

window = new UIWindow (UIScreen.MainScreen.Bounds); 
    navigationController = new UINavigationController(); 
    navigationController.SetNavigationBarHidden (true, true); 

    loginViewController = new LoginViewController(); 
    navigationController.AddChildViewController (loginViewController); 

    if (validToken == true){ 
     Menu = new SlideoutNavigationController(); 
     Menu.MainViewController = new MainNavigationController(new DashBoardViewController(), Menu){ NavigationBarHidden = true }; 
     Menu.MenuViewController = new MenuNavigationController(new SettingViewController(), Menu) { NavigationBarHidden = true }; 
     navigationController.AddChildViewController (Menu); 
    } 

    window.RootViewController = navigationController; 
    window.MakeKeyAndVisible(); 
    return true; 

首次推出的應用其檢查localToken的,如果存在令牌返回true,否則返回false。 如果在首次啓動應用程序時加載虛假loginViewController。 成功驗證後提供用戶名和密碼
在代碼下運行。

Menu = new SlideoutNavigationController(); 
Menu.MainViewController = new MainNavigationController(new DashBoardViewController(), Menu){ NavigationBarHidden = true }; 
Menu.MenuViewController = new MenuNavigationController(new SettingViewController(), Menu) { NavigationBarHidden = true }; 
NavigationController.PushViewController (Menu, true); 

在DashBoardViewController有LogoutButton。 //應重定向到loginController屏幕。

btn_Logout.TouchUpInside += (sender, e) => { 

    Console.WriteLine ("Back Pressed"); 
    this.NavigationController.PopViewControllerAnimated(true); 
// this.NavigationController.PopToRootViewController (true); 
// this.NavigationController.PopToViewController (this,true); 
}; 

它停留在相同的viewController是DashBoardViewController。 當按下注銷按鈕時,想返回到loginviewcontroller。

@All 由於事先

回答

2

其實你正在試圖導航回到NavigationController不具有LoginViewController在viewControllers的堆棧。所以,在你的appdelegate添加下一個代碼

public void GoToLoginScreen() 
{ 
    navigationController.PopToRootViewController(true); 
} 

而且在btn_Logout.TouchUpInside事件

btn_Logout.TouchUpInside += (sender, e) => 
{ 
    Console.WriteLine ("Back Pressed"); 
    (UIApplication.SharedApplication.Delegate as AppDelegate).GoToLoginScreen(); 
}; 
+0

非常感謝!它的工作...在那個navigationController.PopToRootViewController(true); – kiran 2014-08-29 18:47:28