Xamarin.Forms "Application.Current" 在 iOS 下不是我的申请 class

Xamarin.Forms "Application.Current" under iOS is not my Application class

我正在使用 Xamarin.Forms 5.0.0.2012 编写 Xamarin.Forms 应用程序。

我正在尝试使用以下代码退出当前内容页面:

        async void _quitButton_Clicked(object sender, EventArgs e)
        {
            bool doQuit = await DisplayAlert("Confirm", "Are you sure you want to quit?", "yes", "no");
            if (doQuit)
            {
                await Application.Current.MainPage.Navigation.PopAsync();
            }
        }

这在 Android 下有效,但在 IOS 上,Application.Current 不是 我的应用程序实例 class,但是 Xamarin.Forms.PageExtensions.EmbeddedApplication 的实例。调用 PopAsync 没有任何效果,在检查 iOS 上的 Navigation 对象时,它显示了一个空的导航堆栈,而我希望在 Android.

上看到和确实看到的 4 个页面

如何在 iOS 下访问正确的导航堆栈以实现与退出当前内容表单相同的效果?

更多背景:

Application.Current 属性 在应用程序生命周期的大部分时间里都是正确的(即,我的应用 class 的一个实例),直到呈现我遇到问题的内容页面.这个特定页面还使用 skiasharp 和 skiasharp.forms,创建一个 SKCanvas 来渲染。我怀疑这与页面扩展应用程序 class 实例化有关。

似乎有一个不明确的引用,您可能将错误的命名空间导入了您的 iOS 项目。尝试引用应用程序的完整命名空间路径 class:

Xamarin.Forms.Application.Current

我明白了。这是我的一个愚蠢的错误。

我在不相关的 iOS-specific 代码中创建了一个新的 ViewController 我正在试验的东西,这导致 App.Current static 属性被覆盖。

(实验代码与强制内容页面以横向显示有关,有一次,我的印象是需要自定义视图控制器才能在 iOS 下 Xamarin.Forms。事实并非如此,但死代码仍在执行。)