新的 Google Analytics SDK 为 UIViewController
引入了一个新的子类,您必须从中继承:GAITrackedViewController
。
更多信息请点击:https://developers.google.com/analytics/devguides/collection/ios/v2/screens
这显然与 MvxBindingTouchViewController
冲突,因为您只能从 C# 中的一个类继承。
建议使用什么方法来实现此功能?
最佳答案
MvvmCross 的 MvxTouchViewController 很特别...
MvvmCross 的 MvxBindingTouchViewController 更加特别......
但这些的特殊之处在于它们继承自标准 UIViewController(UIVIewController、UITableViewController、UITabBarController 等),然后添加以下功能:
- Cirrious.MvvmCross 层的 ViewModel 构造和 ViewModel 属性
- Cirrious.MvvmCross.Binding 层绑定(bind)的构建和存储
看一些例子:
https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Touch/Views/MvxTouchViewController.cs和 https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Touch/Views/MvxBindingTouchViewController.cs
https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Touch/Views/MvxTouchTableViewController.cs和 https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Touch/Views/MvxBindingTouchTableViewController.cs
https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Touch/Views/MvxTouchCollectionViewController.cs和 https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Touch/Views/MvxBindingTouchCollectionViewController.cs
在这些中,您有望看到这涉及大量的代码剪切和粘贴 - 尽管我们确实尝试使用扩展方法来最小化它。 (如果 C# 有多重继承或 mixins,我们就不需要这样做 - 我很想有 Mixins...但永远不想要多重继承!)
所以......如果你想添加自己的MvxXXXXXBindingViewController,那么:
- 参加基础 XXXXX 类(class),
- 继承它并添加“the stuff”以创建 MvxXXXXViewController,
- 然后获取您的 MvxXXXXXViewController 并再次继承它以制作您的 MvxBindingXXXXXViewController
- 发布到您的博客和新的 GitHub 存储库,以便其他人可以利用您的辛勤工作
- 工作完成
高级注释:
如果您想在 Droid 中看到相同的内容,请参阅 Insert a Monogame view inside MvvmCross monodroid Activity
TabBarController 也很有趣 - 它有一些额外的方法
在“很快”的某个时刻(今年上半年)我们将创建 VeeThree,这会将 MvxViewController 切换为非通用格式 - 这是因为 MonoTouch 现在建议不要在 iOS 基类上使用泛型 - Rolf说它在大多数情况下是安全的,但当它导致错误时,它们就是“heisenbugs”。
当前类中还有一些失效的旧 iOS 代码 (ViewDidUnload) - 这些代码也将在 VeeThree 中被剔除。
关于ios - 将 Google 移动分析与 MVVMCross 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518876/