c# - MVVMCross 中从 4.4 迁移到 5.7 时出现 CustomPresenter 错误
问题描述
你好 stackoverflowers,我正在开发一个使用 MVVMCross 和 Xamarin for iOS 和 Android 构建的项目。我发现该项目使用了一个相当旧版本的 MVVMCross (4.4.0),我正试图将它升级到当前版本 (6.4)。我认为首先升级到 5.7 是个好主意,在稍后阶段,当我将导航切换到新表单等时,我会升级到 6++。我已经成功地将android版本运行到5.7,但是,iOS版本使用customPresenter,我不太清楚如何转换为5.1中引入的新Presenter。我认为我的自定义演示者基于一段时间未更新的https://github.com/MvvmCross/MvvmCross-Samples/tree/master/XPlatformMenus/XPlatformMenusTabs.iOS 。
在我的子类 MvxIosViewPresenter 的 MvxTabPresenter 中,显示函数不再是可重写的。此外 IMvxModalIosView 似乎不再存在。
public override void Show(IMvxIosView view)
{
if (view is IMvxModalIosView)
{
if (this._currentModalViewController != null)
{
return;
}
var currentModalViewController = view as MvxViewController;
this._currentModalViewController = currentModalViewController;
currentModalViewController.ModalPresentationStyle = UIModalPresentationStyle.Popover;
CurrentTopViewController.AddChildViewController(currentModalViewController);
currentModalViewController.View.Frame = CurrentTopViewController.View.Bounds.Inset(10, 10);
currentModalViewController.View.Alpha = 0;
CurrentTopViewController.View.Add(currentModalViewController.View);
currentModalViewController.DidMoveToParentViewController(CurrentTopViewController);
UIView.Animate(0.25, () =>
{
currentModalViewController.View.Alpha = 1;
});
//this.PresentModalViewController(currentModalViewController, true);
return;
}
if (view is HomeView)
{
if (this.CurrentTopViewController is MvxTabBarViewController)
{
TabBarPresenter.SelectedIndex = 0;
return;
}
public override void CloseModalViewController()
{
if (this._currentModalViewController != null)
{
this._currentModalViewController.DismissModalViewController(true);
_currentModalViewController.WillMoveToParentViewController(null);
_currentModalViewController.View.RemoveFromSuperview();
_currentModalViewController.RemoveFromParentViewController();
this._currentModalViewController = null;
return;
}
base.CloseModalViewController();
}
}
这也不再可以从超类中覆盖。
关于如何解决这个问题的任何建议?
亲切的问候,V
解决方案
正如您在MvxIosViewPresenter中看到的那样,现在 mvx 属性已注册到应调用的操作中。
所以,首先你应该继承自MvxIosViewPresenter
. 然后,对于模态,您应该覆盖ShowModalViewController
.
我建议您阅读 repo 上的文档、MvxIosViewPresenter和MvxAttributeViewPresenter文件,以了解它是如何工作的。
HIH
推荐阅读
- xamarin.forms - 特性后的插件BLE(v1.3.0)延迟。ReadAsync()
- python-3.x - Pandas:如何将 UTC 时间转换为当地时间?
- objective-c - 如何通过本机反应管理 ios 后台模式(例如在应用程序被杀死时调用 API)
- java - 从另一个 JVM 读取一个 JVM 的输入流
- r - 使用 R 合并前 2 行
- centos - CentOS 7 - 如何在 RPM 规范文件中使用 wget 安装依赖项
- mongodb - 等待与 WritableServerSelector 匹配的服务器时,在 30000 毫秒后超时。状态 = 已连接
- android - 在少数品牌设备上获取IMEI号码的问题(华为)
- c# - 如何使用带有径向量规的 Windows 窗体报告
- swift - 如何更改swift文件的标题注释