2013-05-09 74 views
3

使用MonoTouch的我在FinishedLaunching一个LogonViewController添加到窗口,并显示:MonoTouch的更换RootViewController的

 window = new UIWindow(UIScreen.MainScreen.Bounds); 
     window.RootViewController = new LogonViewController(); 
     window.MakeKeyAndVisible(); 

LogonViewController,我怎么添加的主要VC,称为MainViewContoller并取出LogonViewController? (这是用户登录后会发生的操作。)

回答

6

即使可以更换window.RootViewController,但这不是通常的做法。大多数时候,你定义你的RootViewController并从那里处理你的导航,包括登录。至少我是这么做的。

//AppDelegate.cs 
public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
{ 
    window = new UIWindow (UIScreen.MainScreen.Bounds); 
    window.RootViewController = new MainViewController();  
    window.MakeKeyAndVisible(); 
    return true; 
} 

//MainViewController.cs 
public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 
    if (not_logged_in) 
     PresentViewController (new LoginViewController(), true,()=>{}); 
} 
5

为什么它的价值是我以前做过的。

public static void swapRootView(UIViewController newView, UIViewAnimationOptions opt) 
     { 
      UIView.Transition(mainWindow, 0.5, opt, delegate{ 
       mainWindow.RootViewController = newView; 

      },null); 
     } 

然后登录后可以使用该选项调用该方法。

swapRootView(yourNewViewController, UIViewAnimationOptions.TransitionFlipFromRight); 
+0

这是一个非常好的方法。 +1点 – 2013-05-13 02:18:32