使用 mvvmcross,我如何“共享”一个视图模型以使用 iphone 的视图和 ipad 的另一个视图?有啥特殊的命名约定吗?

Posted

技术标签:

【中文标题】使用 mvvmcross,我如何“共享”一个视图模型以使用 iphone 的视图和 ipad 的另一个视图?有啥特殊的命名约定吗?【英文标题】:Using mvvmcross, how can I "share" a viewmodel to work with a view for iphone and another for ipad? Any special name convention?使用 mvvmcross,我如何“共享”一个视图模型以使用 iphone 的视图和 ipad 的另一个视图?有什么特殊的命名约定吗? 【发布时间】:2013-08-22 15:07:44 【问题描述】:

我正在开发一个针对 androidios(iPhone 和 iPad)的跨平台应用程序。

我正在使用 MvvmCross(感谢 Stuart)和 Xamarin。

我的疑问与iOS开发有关。应用程序目标设备设置为通用。

我创建了一个名为 LoginViewModel 的视图模型(在核心 ViewModels 目录中)和一个名为 LoginView 的视图(在 UI 的 Views 目录中),因此,它遵守 mvvmcross 命名约定并且一切正常。

由于应用程序的主要用途是在 iPad 上使用,因此 LoginView 是 iPad ViewModelController。

但在未来,我将为 iPad 和 iPhone 构建 xib。

为了测试这一点,我创建了一组新的 ViewModelController(更改为扩展 MvxViewController)并将它们命名为 LoginViewModel~ipad(ipad 视图控制器)和 LoginViewModel~iphone(iphone 视图控制器)。

Xamarin Studio 不允许我使用 ~ 保存保存,并将文件集重命名为 LoginViewModel_ipad 和 LoginViewModel_iphone(文件集:.xib、.cs 和 Designer.cs)。

我使用 xCode IB 将一组随机控件添加到 xib 文件中并保存。

我在 iPhone 模拟器中启动了应用程序,但我的视图没有出现,只有一个空屏幕(或几乎是空的)。

可以在 iPhone 和 iPad 视图之间共享相同的视图模型吗? 如果是,这些案例的命名约定是什么? 你能引导我走向正确的方向吗?

感谢大家的回复,

路易斯·皮尼奥

【问题讨论】:

【参考方案1】:

Stuart 介绍了 N+1 系列 here 中的通用应用程序。这可能会有所帮助。

【讨论】:

另见***.com/questions/17112214/… @Rob:谢谢回复,我还在n=13。制作自定义演示者与我打算做的完全不同。只是为了澄清我遇到的一个问题,似乎我可以在 iPhone 和 iPad 中使用 iPhone 视图(它会调整到 iPad),但反之则不正确(视图不会出现在 iPhone 模拟器问题中)。跨度> @Stuart:感谢您的回复,在您的 n=24 视频中显示的示例中,您覆盖了 CreatePresenter(对于 iPad 设备),但在堆栈溢出后使用了 MvxFormFactorSpecific 属性,什么如果应用程序适用于 ios 和 droid 是正确的方法吗?任何 MvxFormFactorSpecific 示例? 正确的方式是让你的应用做你想做的事。使用演示者或使用属性都可以工作,并且都只是 C# 代码 - 所以你可以实现你想要的。

以上是关于使用 mvvmcross,我如何“共享”一个视图模型以使用 iphone 的视图和 ipad 的另一个视图?有啥特殊的命名约定吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mvvmcross 视图模型中使用异步?

MVVMCross:如何制作无限滚动视图并下推刷新视图?

MvvmCross 4 和 Xamarin.iOS -> 使用 Storyboard 时如何从 Core 加载视图控制器?

如何将 MVVMCross 与 C# 的标记绑定

如何在MvvmCross中呈现iOS模态视图

Mvvmcross - 从常规活动中显示 mvvmcross 视图模型