我想在成功登录后将用户重定向到主页面,因此我不希望他有后退按钮或能够再次访问登录页面。
我已将用户重定向到登录页面,如下所示:
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:Android上不支持全局支持PopAsync,请使用NavigationPage。
并且无需提及所提及的NavigationPage
也不起作用。
答案 0 :(得分:2)
有两种方法可以解决这个问题。
最初在App.cs的构造函数中将$('#show').on('click', function(){
$('tbody td').css('display','table-cell');
});
设置为主页。然后在您的主页的App.MainPage
事件中或者如果它具有ViewModel,则其Initialising方法检查用户是否经过身份验证。如果是,请加载他的数据。如果不是,则将您的登录页面显示为模态。登录成功后,您可以弹出登录页面的模式并加载主页的数据。如果需要,您还可以在登录页面中处理后退按钮事件,以禁止用户退出模态页面。
缺点 - 在登录模式显示之前,主页将显示一秒钟。
在App.cs的构造函数中,检查用户是否经过身份验证。如果用户已通过身份验证,则通过将其设置为OnAppearing
来显示主页。否则将MainPage
设置为登录页面。登录成功后再次设置MainPage
缺点 - 在构造函数中检查isAuthenticated可能会使应用程序的初始加载看起来更慢。
您遇到的错误是因为您没有将任何页面推入导航堆栈。因此你的流行音乐不会奏效。
答案 1 :(得分:1)
var firstPage = isAuthenticated ? new General.Pages.MainPage() : new Account.Pages.Login();
MainPage = new NavigationPage(firstPage);
如果您将使用
提到
NavigationPage
正确地,PopAsync
将起作用。
答案 2 :(得分:0)
我刚想通了,您可以随时使用此代码更改MainPage
:
App.Current.MainPage = new General.Pages.MainPage();
我留下这篇文章,如果它可以帮助其他用户。