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 объекты
  • уровень страницы MvxViewModels, которые также INotifyPropertyChanged объекты, но которые вы ожидаете инициализировать в навигации.

Если вы хотите объединить эти две концепции, то, возможно, вы могли бы... но на самом деле я подозреваю, что, возможно, было бы проще и понятнее дать двум типам классов разные имена, просто поместить код инициализации в конструктор для моделей представления вкладок, или, возможно, просто позвонить Init на них самих в Home конструктор.

Другие вопросы по тегам