如何解决无法弹出弹出页面
也许有人对此有答案,我对编程有点陌生,不明白发生了什么。我尝试弹出一个弹出页面,但它无法正常工作。
代码片段:
第一次尝试:
private void BtnOkay_Clicked(object sender,EventArgs e)
{
if (currentDungeon == "DungeonX")
{
Navigation.PopModalAsync();
Navigation.PopModalAsync();
Navigation.PushModalAsync(new DungeonPage(currentPlayer));
}
}
第一个结果:它完全忽略 Naviagtion.PopModalAsync();
并将新的 DungeonPage 推到它上面。
第二次尝试:
private async void BtnOkay_Clicked(object sender,EventArgs e)
{
if (currentDungeon == "DungeonX")
{
await Navigation.PopModalAsync();
await Navigation.PopModalAsync();
await Navigation.PushModalAsync(new DungeonPage(currentPlayer));
}
}
第二个结果:与第一个结果相同,完全忽略 Naviagtion.PopModalAsync();
并将新的 DungeonPage 推到上面。
第三次尝试:
private async void BtnOkay_Clicked(object sender,EventArgs e)
{
if (currentDungeon == "DungeonX")
{
await PopupNavigation.Instance.PopAsync();
await Navigation.PopModalAsync();
await Navigation.PushModalAsync(new DungeonPage(currentPlayer));
}
}
第三个结果:我尝试以正确的方式弹出弹出页面,但现在出现以下异常。 system.indexOutOfRangeException: 'No Page in PopupStack'
附带信息:
我像这样创建了弹出页面:
private async Task PlayerAliveCheck()
{
...
await Navigation.PushModalAsync(new CombatPostScreen(player,result);
...
}
我有一个类似的情况,第一次尝试完全正常,函数 checkLevel()
从私有 void 事件中调用。
private void checkLevel()
{
Navigation.PushModalAsync(new SmelteryPageDetail(slotItem,player,characters));
}
private void BtnUpgrade_Clicked(object sender,EventArgs e)
{
...
Navigation.PopModalAsync();
Navigation.PopModalAsync();
Navigation.PushModalAsync(new SmelteryPage(currentPlayer));
}
我尝试了异步并等待 awswell,它仍然有效。如果我尝试使用上面提到的正确方法,它会抛出相同的异常。
如果您读到这里,提前感谢您抽出宝贵时间
解决方法
我刚刚发现我的这部分代码一直在阻止页面弹出。
protected override void OnAppearing()
{
base.OnAppearing();
Navigation.PopModalAsync();
}
也许有人可以编辑此答案并添加解释。
感谢大家的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。