将Google移动分析与MVVMCross整合

新的Google AnalyticsSDK为您必须inheritance的UIViewController引入了一个新的子类: GAITrackedViewController

更多信息: https : //developers.google.com/analytics/devguides/collection/ios/v2/screens

这显然与MvxBindingTouchViewController冲突,因为只能从C#中的一个类inheritance。

推荐的方法是什么?

MvvmCross的MvxTouchViewController是特殊的…

MvvmCross的MvxBindingTouchViewController更加特别…

但是这些只是特别的,他们从标准的UIViewControllers(UIVIewController,UITableViewController,UITabBarController等)inheritance,然后添加以下function:

  • ViewModel构造和Cirrious.MvvmCross图层的ViewModel属性
  • 在Cirrious.MvvmCross.Binding层构build和存储绑定

看看一些例子:

在这些你可以希望看到这涉及到相当数量的代码剪切 – 尽pipe我们尽量使用扩展方法来尽量减less它。 (如果C#有多重inheritance或混入,我们不需要这样做 – 我很想拥有Mixins,但是不需要多次的Inhertitance!)

所以….如果你想添加你自己的MvxXXXXXBindingViewController,那么:

  1. 把你的基地XXXXX类,
  2. 从它inheritance并添加“东西”,使一个MvxXXXXViewController,
  3. 然后把你的MvxXXXXXViewController并从它inheritance,使您的MvxBindingXXXXXViewController
  4. 发布到您的博客和新的GitHub回购,所以其他人都可以背负你的辛勤工作
  5. 任务完成

先进的笔记:

  • 如果你想在Droid中看到相同的东西,请参阅在MvvmCross monodroid Activity中插入一个Monogame视图

  • TabBarController也很有趣 – 它有一些额外的方法

  • 在“即将”(今年上半年)的某个时候,我们将创buildVeeThree,这会将MvxViewController切换为非通用格式 – 这是因为MonoTouch现在build议不要在iOS基类中使用generics – Rolf说这是安全的时间,但是当它引起错误时,它们就是'heisenbugs'。

  • 在当前类(ViewDidUnload)中也存在一些死老的iOS代码 – 这个代码也会在VeeThree中被剔除。