xamarin.ios - mvvmcross TabBarController ViewModel Init() 未调用?

标签 xamarin.ios mvvmcross

我已经实现了一个 TabBarController ,非常类似于 iOS 的 session 教程。现在一切都运行良好,除了选项卡的 Viewmodel 上的 Init 方法似乎永远不会像平常那样被调用。

是否有什么我忘记做的事情来确保 Init 被调用?如果必须的话,我可以将此代码移动到 ViewModel 的构造函数中,但如果可能的话我想避免这种情况。

编辑

我想我在这里真正要问的是,如果我手动实例化一个 View 模型并通过扩展/帮助器方法从中“创建”一个 View ,init 会在这个过程中的某个时刻被调用吗?如果是这样,我什么时候可以在 View 模型上调用 init ?

最佳答案

MvxViewModel 上调用 Construction-Initialize-ReloadState-Start (C-I-R-S) 序列如果它是使用默认的 ViewModel 定位器创建的 - 这就是您调用 ShowViewModel 时发生的情况.

如果子选项卡的 ViewModel 是通过调用 new 创建的直接在 ViewModel 上 - 就像 the Conference HomeViewModel.cs#L11 中那样- 那么显然同样的序列不会发生。

真正的区别在于:

  • 选项卡ViewModel就是 INotifyPropertyChanged对象
  • 页面级别 MvxViewModel s 也是 INotifyPropertyChanged对象,但您进一步希望在导航中对其进行初始化。

如果你想统一这两个概念,那么你可能可以......但实际上我怀疑给这两个类类型提供不同的名称可能会更简单、更清晰,只需将初始化代码放在选项卡的构造函数中查看模型,或者调用 Init自己在 Home 中查看它们构造函数。

关于xamarin.ios - mvvmcross TabBarController ViewModel Init() 未调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352252/

相关文章:

ios - 从 Xamarin 表单导航到 Xamarin Native

ios - Xamarin iOS。如何自动转到 View 的末尾

c# - 如何在 UWP 中重新实例化页面/ View 模型?

android - 在 MvvmCross 中使用选项卡

keyboard - 我可以通过触摸 DialogViewController (MonoTouch.Dialog) 的背景来关闭 iPhone 键盘吗?

uitableview - MvvMCross UITableView 将本地属性绑定(bind)到 UITableViewCellAccessory.CheckMark

c# - Fluent Bindings 和 UIButton 标题

wpf - MVVMCross 和 Prism 组合

android - 使用 MVVMCross 向左或向右滑动以刷新当前 View

ios - 当我使用 MvxSimpleTableViewSource 时,xamarin ios Tableview 没有重新加载