【问题标题】:Monotouch Replacing the RootViewControllerMonotouch 替换 RootViewController
【发布时间】:2013-05-09 22:22:19
【问题描述】:
使用 MonoTouch,我将 LogonViewController 添加到窗口并在 FinishedLaunching 上显示它:
window = new UIWindow(UIScreen.MainScreen.Bounds);
window.RootViewController = new LogonViewController();
window.MakeKeyAndVisible();
在 LogonViewController 中,如何添加名为 MainViewContoller 的主 VC 并删除 LogonViewController? (这是用户登录后将发生的操作。)
【问题讨论】:
标签:
iphone
xamarin.ios
xamarin
monotouch.dialog
【解决方案1】:
即使可以替换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, ()=>{});
}
【解决方案2】:
这就是我以前的做法。
public static void swapRootView(UIViewController newView, UIViewAnimationOptions opt)
{
UIView.Transition(mainWindow, 0.5, opt, delegate{
mainWindow.RootViewController = newView;
},null);
}
然后登录ok后,用这个选项调用那个方法。
swapRootView(yourNewViewController, UIViewAnimationOptions.TransitionFlipFromRight);