2013-06-27 32 views
2

我已經實現了TabBarController,就像iOS的Conference教程一樣。現在一切正常,除非看起來ViewModels上的Init方法不會像通常那樣被調用。mvvmcross TabBarController ViewModel Init()未被調用?

有沒有我忘了確保Init被調用?如果我必須的話,我可以將這段代碼移到ViewModel的構造函數中,但是如果可能的話,我想避免這種情況。

編輯

我想我真的問這裏是如果我手動實例化一個視圖模型,並通過擴展/輔助方法「創造」,從它一看,會初始化被調用在一些點過程?如果是這樣,我可以期望init在viewmodel上調用什麼?

回答

4

如果使用默認的ViewModel定位器創建構造 - 初始化 - 重新加載狀態 - 開始(C-I-R-S)序列,則調用MvxViewModel - 當調用ShowViewModel時會發生這種情況。

如果通過在ViewModel上直接調用new來創建子標籤的ViewModels,就像在the Conference HomeViewModel.cs#L11中那樣 - 那麼顯然這個相同的序列不會發生。

真的在這裏所不同的是間:

  • 的標籤ViewModel S的只是INotifyPropertyChanged對象
  • 頁面級MvxViewModel S的也INotifyPropertyChanged對象,但你還期望得到內初始化導航。

如果你想統一這兩個概念,那麼你可能......但實際上我懷疑它可能更簡單也更乾淨,也許給兩個類的類型不同的名稱,只是把init代碼放入構造函數對於選項卡視圖模型,或者也可以在Home構造函數中自己調用Init

+0

太好了,這是我懷疑的情況。我將不得不做一些重構來完成這項工作,但它確實有可能。感謝您的意見。 – theMothaShip

+0

只是一個fyi,我通過在ViewDidShow過載中的viewmodels上調用init來實現它。出於某種原因,如果它是由mvvmcross初始化的,我無法在視圖模型的構造函數中調用Init。不知道爲什麼,但無論如何,如果我調用由mvvmcross調用的操作/方法之外的init它似乎工作正常。 – theMothaShip

相關問題