1

我制作了一个HomeViewModel包含其他一些ViewModel要在 a 中呈现的 s TabParPresenter。这可以正常工作,并且ViewModel相关View的 s 会在其相应的选项卡中正确显示。然而,在ViewModels 中有一个检查ctor,告诉它在某些条件适用时它需要导航到SettingsViewModel,这不是ViewModels 中包含的 s的一部分HomeViewModel。导航事件被 捕获TabBarPresenterHost,这只是Presenter应用程序的 ,如果 aTabBarPresenter存在且不为空,则将其传递给TabBarPresenter.ShowView()方法。所有这些都发生在TabBarPresenter完成加载并SelectedViewController设置在ViewDidLoad. 因此,TabBarPresenter依赖于使用SelectedViewController来推送新View的我显然得到了一个Null Reference Exception.

简而言之,我想要的是:

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

然后,当我在里面SettingsViewModel设置好我需要的东西时,你会返回HomeViewModel

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

4

1 回答 1

1

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

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

为了解决这个问题,我个人选择在导航之前将这种类型的行为放在代码中。

于 2013-06-03T10:24:47.067 回答