gpt4 book ai didi

xamarin - 对 Xamarin.iOS Storyboard的 MVVMCross 支持

转载 作者:行者123 更新时间:2023-12-03 10:22:17 26 4
gpt4 key购买 nike

由于支持 XS 集成 iOS Storyboard以制作稳定流,我希望能够将此功能与 MVVMCross 结合使用。

从根本上说,它似乎有点像它不应该工作,因为 Storyboard指示 View 项目中的导航层次结构,而不是像 MVVMCross 这样的 View 模型项目。

但是,如果有一种方法可以使两者一起工作,那就太棒了。

有谁知道这可能是如何实现的?

干杯,特里斯坦

最佳答案

至少有一个发布的示例显示了 Storyboard的使用——相当奇怪的名称 eh - https://github.com/slodge/eh

此示例由以下人员工作:

  • 让 Storyboard控制导航
  • 使用 MvxViewController作为 VC 基类(代替 UIViewController )
  • 手动设置 ViewModel在一种情况下 - 通过直接设置 之前 调用base.ViewDidLoad() - 见 https://github.com/slodge/eh/blob/master/storyb/RootViewController.cs#L23
  • 手动设置 Request在一种情况下 - 在 Segue 期间导航 - 见 https://github.com/slodge/eh/blob/master/storyb/RootViewController.cs#L40

  • 使用这样的方法很容易将 Mvx 数据绑定(bind)添加到主要由 Storyboard 驱动的应用程序中。

    或者,如果开发人员更愿意让 Mvx ShowViewModel导航系统控制屏幕的流程 - 但也希望这些屏幕设计在 Storyboard中,那么这可以通过开发普通的 MvvmCross 应用程序来实现,但使用自定义 Presenter它从 Storyboard 中加载 ViewControllers。

    在 MvvmCross v3.1.1 中,您可以在 ViewsContainer 处执行此操作等级:
  • 覆盖一个类 MyContainer来自 MvxTouchViewsContainer.cs
  • 覆盖方法protected virtual IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request) - 见 https://github.com/MvvmCross/MvvmCross/blob/b8545752f28f4e569efeaa397c3085b0373e4d8b/Cirrious/Cirrious.MvvmCross.Touch/Views/MvxTouchViewsContainer.cs#L40
  • 在此覆盖中,加载基于 Storyboard 的 ViewController:
     protected override IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request)
    {
    return (IMvxTouchView)UIStoryboard.FromName("MyStoryBoard", null)
    .InstantiateViewController(viewType.Name);
    }
  • 创建您的MyContainer Setup期间-
    protected override IMvxTouchViewsContainer CreateTouchViewsContainer()
    {
    return new MyContainer();
    }
  • 那应该就可以了...
  • 关于xamarin - 对 Xamarin.iOS Storyboard的 MVVMCross 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126929/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com