2016-08-17 3 views
0

Я бы хотел перенаправить пользователя на главную страницу после успешного входа в систему, поэтому я не хочу, чтобы у него была кнопка «Назад» или вы могли вернуться на страницу входа еще раз.Открыть страницу без обратной связи или закрыть

Я перенаправлены пользователя на страницу входа в систему с чем-то вроде этого:

if (isAuthenticated) 
{ 
    MainPage = new General.Pages.MainPage(); 
} 
else 
{ 
    MainPage = new Account.Pages.Login(); 
} 

Я использую этот код для успешного входа в систему, которая не работает и дает исключение:

await Navigation.PopAsync(false); 
await Navigation.PushAsync(new General.Pages.MainPage()); 

Данное исключение:

System.InvalidOperationException: PopAsync не поддерживается по всему миру на Android, пожалуйста, e используйте навигационную страницу.

И не нужно упоминать, что упомянутый NavigationPage не работает ни.

ответ

1
var firstPage = isAuthenticated ? new General.Pages.MainPage() : new Account.Pages.Login(); 
MainPage = new NavigationPage(firstPage); 

Если вы будете использовать

упоминается NavigationPage

правильно, PopAsync будет работать.

+0

Спасибо за ваш ответ, но проблемный код был второй частью. – Akbari

+1

Но причина проблемы была в первой части.Вы не можете использовать «Навигация», если «MainPage» не является «NavigationPage». –

0

Я просто понял это, вы можете изменить MainPage в любой момент, используя этот код:

App.Current.MainPage = new General.Pages.MainPage(); 

Я оставляю этот пост, чтобы быть, если это может возможно помочь другим пользователям.

2

Есть два способа, которыми вы могли бы приблизиться к этому.

  1. Set вы App.MainPage изначально в конструкторе App.cs в качестве домашней страницы. Затем в событии вашей домашней страницы OnAppearing или если у него есть ViewModel, тогда его метод Initializing проверяет, аутентифицирован ли пользователь. Если да, загрузите его данные. Если вы не показываете свою страницу входа в систему как модальный. После успешного входа в систему вы можете ввести модальную страницу входа и загрузить данные для главной страницы. Кроме того, если требуется, вы можете обрабатывать событие кнопки «Назад» на странице входа, чтобы не допустить, чтобы пользователь вышел из модальной страницы. Недостаток - домашняя страница будет отображаться на секунду до появления модальности входа.

  2. В конструкторе App.cs проверьте подлинность пользователя. Если пользователь аутентифицирован, то покажите домашнюю страницу, установив его как MainPage. Else установили MainPage в качестве страницы входа. После успешного входа в систему снова установите MainPage.
    Недостаток - проверка isAuthenticated в конструкторе может привести к замедлению начальной загрузки приложения.

И для ошибки, с которой вы сталкиваетесь, является то, что вы не нажимали какие-либо страницы в стек навигации. Следовательно, ваш поп не будет работать.

Смежные вопросы