Проблема навигации в формах Xamarin - PullRequest
1 голос
/ 11 февраля 2020

Мне нужно перенаправить страницы A -> B -> C -> D, как только я попаду в D, мне нужно использовать навигационную кнопку обратно на страницу D -> A. Я пытаюсь реализовать этот сценарий IOS и Android в формах Xamarin.

Пожалуйста, помогите

Ответы [ 3 ]

3 голосов
/ 11 февраля 2020

В вашем случае используется Navigation.PopToRootAsync ();

Navigation.PopToRootAsync (); Этот метод извлекает все, кроме RootPage из стека навигации, поэтому страница приложения root становится активной страницей.

Navigation.PopAsync (); Это приводит к тому, что экземпляр Page2Xaml удаляется из стека навигации, а новая верхняя страница становится активной страницей.

Следующая команда c хорошо объясняет Xamarin.Forms Навигацию , https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical

1 голос
/ 11 февраля 2020

Внутри страницы «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();

    }
0 голосов
/ 12 февраля 2020

Вы можете переопределить событие OnBackButtonPressed и использовать Navigation.PopToRootAsyn c

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

    }
...