使用TabBarPresenter进行ViewModel导航

时间:2013-05-29 12:35:31

标签: xamarin.ios uitabbarcontroller mvvmcross

我制作了HomeViewModel,其中包含要在ViewModel中展示的其他TabParPresenter个内容。这工作正常,ViewModel个关联的View在相应的标签中正确显示。但是,ViewModel的{​​{1}}会检查ctor,当某些条件适用时,它需要导航到SettingsViewModel,这不是ViewModel的一部分} {s}包含在HomeViewModel中。 导航事件被TabBarPresenterHost捕获,这只是应用程序的Presenter,如果TabBarPresenter存在且不为null,则会传递给TabBarPresenter.ShowView()方法。所有这些都发生在TabBarPresenter完成加载并且SelectedViewController设置在ViewDidLoad之前。因此,TabBarPresenter依赖于使用SelectedViewController来推送新的View我明显得到Null Reference Exception

简而言之,我想要的是:

if (conditionForShowingHome == true)
    GoToHome();
else
    GoToSettings();

然后当我在SettingsViewModel内部设置了我需要的东西时,你会回到HomeViewModel

打破这一点的是ViewModelView完成加载之前加载,导航事件在View加载完成之前执行。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我担心将此代码放在ViewModel构造函数中可能会导致问题。

在导航期间调用ViewModel构造函数 - 并非所有平台都支持在现有导航仍在进行时启动新导航。

要解决此问题,我个人选择在导航之前将此类行为放在代码中。