Monotouch Замена RootViewController

Использование MonoTouch Я добавляю LogonViewController в Окно и показываю его на FinishedLaunching:

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

В LogonViewController, как добавить основной VC, называемый MainViewContoller, и удалить LogonViewController? (Это действие, которое произойдет после входа пользователя в систему.)

2 ответа

Даже если возможно заменить 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, ()=>{});
}


Для чего это стоит того, как я это делал раньше.

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

Затем, после входа в систему, вызовите этот метод с этой опцией.

swapRootView(yourNewViewController, UIViewAnimationOptions.TransitionFlipFromRight);

licensed under cc by-sa 3.0 with attribution.