gpt4 book ai didi

uiviewcontroller - 使用 MvvmCross 动态加载 UIViewController

转载 作者:行者123 更新时间:2023-12-02 03:35:54 28 4
gpt4 key购买 nike

我正在尝试从 XIB 或 Storyboard加载 ViewModel 绑定(bind)的 ViewController(使用 MvvmCross 5.0.6)。我的应用程序的逻辑是,该 View Controller 不属于标准根/子导航模式,我需要能够动态实例化它。

如果没有 MvvmCross,我可以轻松地在 Xamarin.iOS 中使用 Segues,但 MvvmCross 似乎不适用于 Segues(除非我误解了某些内容)。

如何实例化 View Controller ,以便将其绑定(bind)到其 View 模型,并且可以将其传递给 UIViewController.AddChildViewController() 等方法?

我已尝试以下操作,但会导致 NullReferenceException(在 MvxViewModelLoader.LoadViewModel(MvxViewModelRequest request, IMvxBundle savingState) 处):

var vmRequest = new MvxViewModelRequest(typeof(MyVcViewModel));
var myVc = (segue.DestinationViewController as MvxViewController).CreateViewControllerFor<MyVcViewModel>(vmRequest) as MyVc;

this.AddChildViewController(myVc);

最佳答案

您是否已将MyVcViewModel绑定(bind)到您的MyVc?如果 MyVc 可以成功用作根/子导航模式,请尝试将其显示为内容(也许您可以将其放在 ViewDidLoad() 事件中):

var vmRequest = MvxViewModelRequest.GetDefaultRequest(typeof(MyVcViewModel));

var viewController = new MvxViewController();
var myView = viewController.CreateViewControllerFor<MyVcViewModel>(vmRequest) as MyVc;
myView.View.Frame = new CGRect(0, 0, 200, 200);


AddChildViewController(myView);
View.AddSubview(myView.View);

关于uiviewcontroller - 使用 MvvmCross 动态加载 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224532/

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