【问题标题】:How to pop then immediately push xamarin pages如何弹出然后立即推送 xamarin 页面
【发布时间】:2019-03-06 22:10:21
【问题描述】:

我当前的导航堆栈有两个页面。第一个是页面 A,第二个是页面 B。当我点击我的按钮时,它会在导航堆栈中添加一个新页面,页面 C。

请问如何显示页面C并删除页面B,或者删除页面B并显示页面C。

我尝试了以下方法

await Navigation.PopAsync()
await Navigation.PushAsync(new CustomPage())

我遇到的问题是页面弹出成功,但新页面不可见。我立即看到页面 A。请问如何弹出当前页面并立即显示另一个页面。

【问题讨论】:

    标签: c# xamarin xamarin.forms


    【解决方案1】:

    而不是弹出页面然后尝试推送新页面。我会推送你的新页面,然后从NavigationStack 中删除上一页。

    var previousPage = Navigation.NavigationStack.LastOrDefault();
    await Navigation.PushAsync(new CustomPage());
    Navigation.RemovePage(previousPage);
    

    【讨论】:

    • 对我来说,它确实会删除页面,但这会破坏 Android 上目标页面上的后退导航。
    【解决方案2】:

    您还可以从下一页的 OnAppearing 方法中从 NavigationStack 中删除每个页面。在这个例子中,第一页...

    protected override void OnAppearing()
        {
            // Remove LoginPage from NavigationStack
            if (Navigation.NavigationStack.Count > 1)
            {
                Page page = Navigation.NavigationStack.First();
                if (page != null && page != this)
                {
                    Navigation.RemovePage(page);
                }
            }
            base.OnAppearing();
        }
    

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多