Xamarin Forms - закрыть страницу навигации - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь закрыть текущую страницу, на которой я работаю, когда использую:

Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));

Как бы я это сделал? Я пытался:

Application.Current.MainPage.Navigation.PopAsync();

Но получил эту ошибку:

PopAsyn c не поддерживается глобально на iOS, используйте NavigationPage.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 20 января 2020

В зависимости от того, где вы пытаетесь закрыть текущую страницу, вы можете использовать:

await Navigation.PopAsync();

Если вы пытаетесь закрыть страницу за пределами контекста NavigationPage, например, в Controller класс вы можете отправить экземпляр Навигации текущей страницы в контроллер.

Примерно так на вашей странице:

public MyConentPage () {
    var myController = new MyController(Navigation);
}

Затем внутри вашего контроллера:

public MyController (INavigation Navigation) {
    this.Navigation = Navigation;
}

public async void ClosePage () {
    await Navigation.PopAsync();
}
0 голосов
/ 21 января 2020

согласно вашему коду, вы настраиваете страницу сведений из главной страницы сведений, чтобы ваша страница сведений работала как начальная страница, вы не набрали sh или не открыли страницу навигации.

Простое решение - это использование для установки Страницы желаний приложения или того, куда вы хотите перемещаться, используя контекст приложения, например,

Application.Current.MainPage = new NavigationPage(new NewPage());

Надеюсь, это поможет. если есть запрос, пожалуйста, не стесняйтесь спрашивать.

0 голосов
/ 20 января 2020

ваш MainPage является MasterDetail, поэтому вам нужно

var nav = ((MasterDetailPage)Application.Current.MainPage).Detail.Navigation;
nav.PopAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...