微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法弹出弹出页面

如何解决无法弹出弹出页面

也许有人对此有答案,我对编程有点陌生,不明白发生了什么。我尝试弹出一个弹出页面,但它无法正常工作。

以下情况:我的堆栈中有三个内容页一个弹出页面

代码片段

第一次尝试

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 举报,一经查实,本站将立刻删除。