gpt4 book ai didi

ios - MvvmCross - View 未加载

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

我将一个旧项目升级到 Xamarin.iOS Unified 和 MvvmCross 4.1。

当我运行该应用程序时,出现以下异常:

MvvmCross.Platform.Exceptions.MvxException: View not loaded for MyView



我的类(class)看起来像:
MyView : MvxViewController<MyViewModel> {}

MvxViewController<T> : UIViewController, IMvxBindingContextOwner, IUIWrappable
where T : ViewModelBase

ViewModelBase : MvxViewModel {}

我怀疑我在 MyView 上缺少一个界面或其他东西以使 MvvmCross 正常运行,但我不确定这可能是什么界面。

我怀疑这是因为我已经不得不在 View 和它的 ViewModel 之间的映射中进行硬编码,以使 MvvmCross 能够通过与 MyView 关联的反射/自动发现来找到 ViewModel。也就是说,在此错误之前,我遇到了无法找到关联的 ViewModel 错误。

如果我让 MyView 实现 IMvxIosView,这个错误就会消失,然后我稍后会在我的代码中获得对 ViewModel 的空引用,所以在需要的地方没有实例化的地方。我的印象是这一切都应该由 MvvmCross 自动处理,但我可能错了。

我正在查看示例,例如 https://github.com/MvvmCross/MvvmCross/wiki/Tip-Calc-A-Xamarin.iOS-UI-project

其中 TipView 包含
public new TipViewModel ViewModel {
get { return (TipViewModel) base.ViewModel; }
set { base.ViewModel = value; }
}

MyView 的基础没有这样的 ViewModel 属性。我错过了什么才能访问这个?

TipCalc 的示例代码仍然引用 Cirrious 命名空间,因此可能情况有所改变。

任何建议表示赞赏。我是 Xamarin 和 MvvmCross 的新手(虽然在 Windows/iOS 开发方面经验丰富),但我无法找到最新的文档。

最佳答案

在创建 MVVMCross ViewModels 和 Views 时,有一些要求

 1.ViewModel and View needs to have same name until "View" 
eg: MyView , MyViewModel

2.You need to load stroryboard name to the Viewcontroller.
eg:namespace [MvxFromStoryboard("MyView")]
public partial class MyView:MvxViewController where TViewModel :MyViewModel

3. When loading View, you need to have default constructor.

public MyView(IntPtr handle) : base(handle){}

4.You need to bind viewmodel to the view.Most of the time in ViewDidLoad
method in ViewClass

var set = this.CreateBindingSet<MyView, MyViewModel >();
set.Apply();

关于ios - MvvmCross - View 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583805/

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