0

我正在使用 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不是我的应用程序类的实例,而是 Xamarin.Forms.PageExtensions.EmbeddedApplication 的实例。调用 PopAsync 没有任何效果,并且在检查 iOS 上的 Navigation 对象时,它显示了一个空的导航堆栈,而我希望在 Android 上看到和确实看到的 4 个页面。

iOS下如何访问正确的Navigation stack,达到退出当前内容表单的效果?

更多背景:

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

4

2 回答 2

1

似乎有一个模棱两可的引用,您可能将错误的命名空间导入到您的 iOS 项目中。尝试引用 Application 类的完整命名空间路径:

Xamarin.Forms.Application.Current

于 2021-06-13T18:05:16.297 回答
0

我想到了。这是我的一个愚蠢的错误。

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

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

于 2021-06-13T19:13:52.907 回答