1

我需要路由页面 A -> B -> C -> D,一旦我进入 D,我需要使用导航按钮返回页面 D -> A。我正在尝试在 Xamarin Forms 中实现这个场景 IOS 和 Android .

请帮忙

4

3 回答 3

3

您的案例使用Navigation.PopToRootAsync ();

Navigation.PopToRootAsync ();此方法会弹出除RootPage导航堆栈之外的所有内容,因此使应用程序的根页面成为活动页面。

Navigation.PopAsync ();这会导致Page2Xaml实例从导航堆栈中删除,新的最顶层页面成为活动页面。

以下文档很好地解释了Xamarin.Forms导航。 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical

于 2020-02-11T09:15:27.590 回答
1

在“D”页面内部覆盖“OnBackButtonPressed”,在函数内部遍历您不再需要的页面并将它们一一删除。

伪代码:

    protected override bool OnBackButtonPressed()
    {
        foreach (var page in Navigation.NavigationStack)
        {

            //find the pages you want to remove
            Navigation.RemovePage(PageYouFound);
        }
        //Set new page
        return base.OnBackButtonPressed();

    }
于 2020-02-11T11:24:48.440 回答
0

您可以覆盖 OnBackButtonPressed 事件并使用 Navigation.PopToRootAsync

protected override bool OnBackButtonPressed()
    {
        Navigation.PopToRootAsync();
        return base.OnBackButtonPressed();

    }
于 2020-02-12T05:50:50.397 回答