Xamarin.ios MVVMCross:CreatePresenter()从未在MvvmCrossTouch设置中调用

Xamarin.ios MVVMCross:CreatePresenter()从未在MvvmCrossTouch设置中调用,xamarin.ios,mvvmcross,Xamarin.ios,Mvvmcross,我想定义一个定制的演示者来定制我的UI,在iPad上实现一个分割视图等等。我定义了这个类: class ProjectPresenter : MvxTouchViewPresenter { public ProjectPresenter(UIApplicationDelegate applicationDelegate, UIWindow window) : base(applicationDelegate, window) { } public overrid

我想定义一个定制的演示者来定制我的UI,在iPad上实现一个分割视图等等。我定义了这个类:

class ProjectPresenter : MvxTouchViewPresenter
{
    public ProjectPresenter(UIApplicationDelegate applicationDelegate, UIWindow window) : base(applicationDelegate, window)
    {
    }

    public override void Show(MvxViewModelRequest request)
    {
        IMvxTouchView viewController = this.CreateViewControllerFor(request);
        this.Show(viewController);
    }
}
我在MvxTouchSetup类中注册了它,如下所示:

protected override IMvxTouchViewPresenter CreatePresenter()
{
    MvxTrace.Trace("Creating the presenter!");
    return new ProjectPresenter(this.ApplicationDelegate, this.Window);
}
但是,Show()方法中的断点永远不会被命中。我尝试向Show()、ChangePresentation()等的所有重载添加断点,但它们从未被命中。现在,我知道Xamarin.iOS对于断点来说是相当不可靠的,但即使加入跟踪方法也不会带来任何乐趣。我甚至用一个抛出异常的方法替换了CreatePresenter()方法,应用程序没有崩溃

我的应用程序的其他修改会在我部署它们时显示出来,因此这不是某种缓存问题,尽管我已经清理了PC和Mac上的源代码。此外,我的setup类的构造函数中的断点被击中,因此这可能根本不是与Xamarin相关的问题


我猜我要么依赖旧的文档,要么做了一些非常愚蠢的事情(我猜是后者)。

我认为不会调用
CreatePresenter
的唯一原因是,如果您在
设置中使用的是旧的“基于presenter的”构造函数


MvxTouchSetup
提供了两种不同的构造函数:

    protected MvxTouchSetup(MvxApplicationDelegate applicationDelegate, UIWindow window)
    {
        _window = window;
        _applicationDelegate = applicationDelegate;
    }

    protected MvxTouchSetup(MvxApplicationDelegate applicationDelegate, IMvxTouchViewPresenter presenter)
    {
        _presenter = presenter;
        _applicationDelegate = applicationDelegate;
    }

默认情况下,在基于Nuget的项目和大多数MvvmCross示例中,使用第一个示例


然而,第二种形式实际上存在于第一种形式,因此出于历史原因,它仍然存在——以防止旧的应用程序崩溃。如果您使用它,则不会使用
CreatePresenter()
,因为您在构建过程中提供了一个presenter,所以不需要它。

现在,当我阅读AppDelegate的内容时,这一切似乎都很明显。谢谢你,斯图尔特!将
[过时的]
标记添加到较旧的构造函数可能是个好主意吗?