mvvmcross TabBarController ViewModel Init() не вызывается?
Я реализовал TabBarController так же, как учебник конференции для iOS. Теперь все работает хорошо, за исключением того, что кажется, что методы Init на Viewmodels для вкладок никогда не вызываются, как обычно.
Я что-то забыл сделать, чтобы вызвать Init Если я должен, я мог бы переместить этот код в конструктор ViewModel, но я бы хотел избежать этого, если это возможно.
РЕДАКТИРОВАТЬ
Я предполагаю, что я действительно спрашиваю здесь, если я вручную создаю экземпляр модели представления и "создаю" представление из нее с помощью методов extension / helper, будет ли вызываться init в какой-то момент процесса? Если да, то в какой момент я могу ожидать вызова init для модели представления?
1 ответ
Последовательность Construction-Initialize-ReloadState-Start (CIRS) вызывается на MvxViewModel
если он создан с использованием локатора ViewModel по умолчанию - что происходит при вызове ShowViewModel
,
Если ViewModels для вложенных вкладок создаются путем вызова new
непосредственно на ViewModel - как в Conference HomeViewModel.cs # L11 - тогда, очевидно, такой же последовательности не происходит.
На самом деле разница здесь между:
- вкладка
ViewModel
с которые простоINotifyPropertyChanged
объекты - уровень страницы
MvxViewModel
s, которые такжеINotifyPropertyChanged
объекты, но которые вы ожидаете инициализировать в навигации.
Если вы хотите объединить эти две концепции, то, возможно, вы могли бы... но на самом деле я подозреваю, что, возможно, было бы проще и понятнее дать двум типам классов разные имена, просто поместить код инициализации в конструктор для моделей представления вкладок, или, возможно, просто позвонить Init
на них самих в Home
конструктор.