我已经编写了一个自定义MvxTouchViewPresenter
,可让我显示SlidingPanel(RootView
)或显示MvxTabBarViewController
(AuthView
)。
当我的应用启动时,
AuthView
),它会按预期工作。 RootView
),它也按预期工作。当我加载AuthView
然后尝试ShowViewModel<RootView>()
时出现问题...基本上在这种情况下发生的事情是我留在AuthView,即使我看到{{1} }方法已正确运行。
这是方法
CustomPresenter.Show()
完整班级的here's a Gist
在尝试使这项工作适当的时候,我错过了什么?
答案 0 :(得分:0)
不确定我所做的是&#34;正确&#34;但它现在正在工作。我仍然非常愿意接受更好的答案。
为了简单地解决此问题,我已经完成的工作是在我致电SetWindowRootViewController(_navigationController);
之前添加对base.Show(request)
的电话
public override void Show(MvxViewModelRequest request)
{
_navigationController = null;
var viewController = (UIViewController)Mvx.Resolve<IMvxTouchViewCreator>().CreateView(request);
RootController = new UIViewController();
// This needs to be a Tab View
if (request.ViewModelType == typeof(AuthViewModel))
{
_navigationController = new EmptyNavController(viewController);
RootController.AddChildViewController(_navigationController);
RootController.View.AddSubview(_navigationController.View);
}
else if (request.ViewModelType == typeof (RootViewModel))
{
_navigationController = new SlidingPanelsNavController(viewController);
RootController.AddChildViewController(_navigationController);
RootController.View.AddSubview(_navigationController.View);
AddSlidingPanel<NavigationFragment>(PanelType.LeftPanel, 280);
}
else
{
throw new Exception("They View Type you're trying to show isn't currently supported.");
}
// RIGHT HERE
SetWindowRootViewController(_navigationController);
base.Show(request);
}