![](/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.