如何解决iOS 下的 Xamarin.Forms "Application.Current" 不是我的 Application 类
我正在使用 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 来渲染。我怀疑这与实例化页面扩展应用程序类有关。
解决方法
似乎有一个不明确的引用,您可能将错误的命名空间导入到您的 iOS 项目中。尝试引用 Application 类的完整命名空间路径:
Xamarin.Forms.Application.Current
我想通了。就我而言,这是一个愚蠢的错误。
我在我正在试验的东西中用不相关的 iOS 特定代码创建了一个新的 ViewController,这导致 App.Current 静态属性被覆盖。
(实验代码与强制该内容页面以横向显示有关,有一次,我的印象是需要自定义视图控制器才能在 iOS 上的 Xamarin.Forms 下实现这一点。那不是情况,但死代码仍在执行。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。