2013-05-29 52 views
1

我製作了一個HomeViewModel,其中包含一些其他ViewModel,將顯示在TabParPresenter中。這工作正常,並且ViewModel的關聯View s正確地顯示在其相應的選項卡中。然而,在ViewModel上有ctor的支票,它在某些條件適用時告訴它,它需要導航到SettingsViewModel,這不是HomeViewModel中包含的ViewModel的一部分。 導航事件被TabBarPresenterHost捕獲,這僅僅是應用程序的Presenter,如果TabBarPresenter存在且不爲空,則將其傳遞給TabBarPresenter.ShowView()方法。所有這些都在TabBarPresenter完成加載之前發生,SelectedViewController設置在ViewDidLoad之前。因此TabBarPresenter依靠使用SelectedViewController推新的View s我顯然得到了Null Reference Exception使用TabBarPresenter的ViewModel導航

總之我要的是:

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

然後當內SettingsViewModel我已經設置回去當您返回到HomeViewModel我需要的東西。

這是什麼突破是s在View完成加載之前被加載,導航事件在View完成加載之前執行。任何想法如何去解決這個問題?

+0

也許我應該補充的是,TabBarController是拆出來Cirrious會議樣品。 – Cheesebaron

回答

1

恐怕把這段代碼放到ViewModel構造函數中很可能會導致問題。

ViewModel構造函數在導航期間被調用 - 並不是所有的平臺都支持在現有的導航仍在進行時開始新的導航。

要解決這個問題,我個人選擇在導航之前將這種類型的行爲放在代碼中。

+0

我做了適用於我的自定義應用程序啓動,將不得不考慮在Android和WP7上執行什麼操作。 – Cheesebaron