我在写Xamarin。使用Xamarin创建应用程序。5。0。0。2012形式。
我试图退出当前的内容页面使用以下代码:
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应用程序。Current不是我的应用程序类的实例,而是Xamarin。Forms。PageExtensions。EmbeddedApplication的实例。调用PopAsync没有效果,在检查iOS上的导航对象时,它显示了一个空的导航堆栈vs 4个页面,我希望看到和看到在Android上。
如何在iOS下访问正确的导航堆栈,以达到退出当前内容形式的相同效果?
更多的背景:
应用程序。当前的属性是正确的(即我的应用程序类的一个实例)应用程序生命周期的大部分,直到我有问题的内容页呈现。这个页面也使用了skisharp和skisharp。窗体来创建一个SKCanvas来渲染。我的怀疑是,这与页面扩展应用程序类实例化有关。
这似乎是一个模糊的引用,你可能导入了错误的命名空间到你的iOS项目。尝试引用Application类的完整命名空间路径:
Xamarin。Forms。Application。Current
我弄明白了。这是我犯的一个愚蠢的错误。
我在不相关的ios特定代码中创建了一个新的ViewController在我正在试验的东西中,这导致app。current静态属性被覆盖。
(实验代码是关于强制内容页面以横向方向显示,在某一点上,我的印象是在iOS的Xamarin。Forms下需要一个自定义视图控制器来实现这一点。事实并非如此,但死代码仍然在执行。)