![](/img/trans.png)
[英]How to make an async call not prevent action from returning response to user
[英]Prevent user from returning to last activity
我正在研究Xamarin.Forms项目,并且在我的PCL中创建了名为“ Login.xaml”的启动页面。 用户必须在此页面上填写其凭据并将其发送到WebAPI。 当API返回“ 1” / true时,它将打开一个名为“ Home.xaml”的新页面。
按下手机上的后退按钮时,如何防止用户返回登录页面? 即:用户登录到第一页,webapi对其进行验证并返回“ 1”,以便打开新页面(“主页”),但是当用户按下“返回”按钮时,它将返回登录屏幕。 在应用程序关闭之前,这应该是不可能的。
当您推送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
}
我建议您看一下文档: Xamarin表单简介-导航
对于我来说,调用RemovePage()
会给我带来各种各样的问题。
我要做的就是改变我的想法。 如果执行Pop
而不是Push
,则实际上是永久删除该页面。 那么,您需要做些什么才能能够执行Pop而不是Push? 首先在当前页面之前插入下一页,然后弹出:
var newRootPage = new NewRootPage();
this.Navigation.InsertPageBefore(newRootPage, this);
await this.Navigation.PopAsync();
注意:为此,您还需要将初始根页面包装在NavigationPage中,就像@germi在回答的最后一部分中说的那样:
// 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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.