Monotouch替换RootViewController

Ian*_*ink 3 iphone xamarin.ios monotouch.dialog xamarin

使用MonoTouch我将一个LogonViewController添加到Window并在FinishedLaunching上显示它:

        window = new UIWindow(UIScreen.MainScreen.Bounds);
        window.RootViewController = new LogonViewController();
        window.MakeKeyAndVisible();
Run Code Online (Sandbox Code Playgroud)

LogonViewController中,如何添加主VC,名为MainViewContoller并删除LogonViewController?(这是用户登录后将发生的操作.)

Ste*_*oix 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, ()=>{});
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 5

值得一提的是我以前做过的事情.

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

            },null);
        }
Run Code Online (Sandbox Code Playgroud)

然后在登录确定后,使用此选项调用该方法.

swapRootView(yourNewViewController, UIViewAnimationOptions.TransitionFlipFromRight);
Run Code Online (Sandbox Code Playgroud)