我正在开发一个Xamarin.Forms项目,在我的PCL中我创建了名为“Login.xaml”的启动页面。在此页面上,用户必须填写其凭据并将其发送到WebAPI。当API返回“1”/ true时,它会打开一个名为“Home.xaml”的新页面。
如何在按手机上的后退按钮时阻止用户返回登录页面?即:用户登录第一页,webapi验证它并返回“1”以便新页面(“Home”)打开,但是当用户按下Back按钮时它返回登录屏幕。在应用关闭之前,这是不可能的。
答案 0 :(得分:2)
当您推送Home.xaml
:
await Navigation.PushAsync(new Home()); // or whatever your page is called
Navigation.RemovePage(this);
这样,在您的用户访问主页后,没有任何内容可以回复。
为此,您的登录页面必须是NavigationPage
。为此,您必须使用NavigationPage
ctor包装它:
// this goes into your App.cs where you enter your app:
public App()
{
MainPage = new NavigationPage(new Login()); // or whatever your login page is called
}
我建议您查看文档:{{3}}
答案 1 :(得分:0)
至于我,打电话RemovePage()
给了我各种各样的问题。
我要做的就是改变思路。如果您执行的是Pop
而不是Push
,那么您实际上是在删除页面。那么为了能够做Pop而不是Push,你需要做什么?首先在当前页面之前插入下一页,然后弹出:
var newRootPage = new NewRootPage();
this.Navigation.InsertPageBefore(newRootPage, this);
await this.Navigation.PopAsync();
注意:为了实现这个目的,你还需要将你的初始根页包装在像@germi这样的NavigationPage中,在他的答案的最后部分说:
// this goes into your App.cs where you enter your app:
public App()
{
// or whatever your login page is called
MainPage = new NavigationPage(new Login());
}
PS:我的F#开源项目中的FWIW this was my fix。