【问题标题】:Xamarin.forms iOS close current page when navigate to another pageXamarin.forms iOS 在导航到另一个页面时关闭当前页面
【发布时间】:2020-09-30 05:50:42
【问题描述】:

我有一个 xamarin.forms 应用程序,它有这样的导航。

MainPage -->(PushmodelASync) Second Page-->(PushModelAsync)--> Third page

我想做的是从Second Page 导航到Third Page 时,我需要Popmodelasync 第二页。为此,我在OnDissappearing 中调用了 PopmodelAsync。在android中它工作正常。但在 iOS 中,会发生第三页打开和关闭,而不是关闭第二页

  protected async override void OnDisappearing()
    {
        base.OnDisappearing();           
        await Navigation.PopModalAsync();            
    }

如何解决这个问题?任何帮助表示赞赏。

【问题讨论】:

  • 你好,我更新了一个答案,你可以看看。如果有疑问可以在下方评论。原因是iOS使用模型导航会错过OnDisappearing方法中的PageSecond实例。因此,PopModalAsync 将不起作用。当页面处于活动状态时,您需要致电PopModalAsync

标签: xamarin xamarin.forms xamarin.ios


【解决方案1】:

您可以在调用PushPop 时更改它们的顺序。

在当前场景中,最好先弹出当前页面,再推送到下一页。也许以相反的顺序调用它们将在 Android 中工作,但它在 iOS 中不起作用。因为在调用OnDisappearing 方法时,应用会错过iOS 中PageSecond 的实例。因此,PopModalAsync 将无效。我们可以先调用pop,再调用push方法使其生效。

例如,在 PageSecond.cs 中:

public partial class PageSecond : ContentPage
{
    public PageSecond()
    {
        InitializeComponent();
    }

    private async void Button_Clicked(object sender, EventArgs e)
    {
        await Navigation.PopModalAsync();
    }

    protected override async void OnDisappearing()
    {
        base.OnDisappearing();
        await Navigation.PushModalAsync(new PageThird());
    }
}

需要的效果会在iOS中显示:

以及在android中的效果:

【讨论】:

  • 我试过了,但问题没有解决。现在第三页被推送,但是当我们从第三页按下时,第二页仍然存在
  • @Anand Okey,项目中使用的 Xamrin Forms 版本是多少?
  • @Jiang,我正在使用 xamarin.forms 4.7.0.1351
  • @Anand Okey,我使用了4.8.0.1451,在 iOS 14 中,它可以工作。 Mayeb 你可以更新到最新版本试试看。
  • @Jiang,我更新了 xamarin.forms 问题依然存在
猜你喜欢
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 2019-03-17
  • 1970-01-01
  • 2022-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多