2017-10-20 239 views
0

我們從一個Xamarin.Forms應用開始,將會有不少頁面,頁面之間的導航將完全由應用處理 - 特別是沒有後退按鈕,這不應該是一個問題,因爲我們只是計劃在iOS上發佈。Xamarin頁面導航(再次)

用戶遇到的第一頁是登錄頁面,登錄後他們會進入主頁面。要執行此轉換,我只需撥打

LoginPage.Navigation.PushModalAsync(HomePage) 

這很好。

現在如果在主頁上,他們按退出鍵,我可以打電話給PopModalAsync(),這個問題是存在的所有網頁的退出按鈕,讓用戶可以遵循這樣的路徑:

登錄 - >首頁 - >創建 - >格式 - >打印 - >註銷

,我需要立即跳轉到登錄界面。

所以在主頁上,如果用戶按下退出按鈕,我打過電話

ApplicationHomePage.Navigation.PushModalAsync(LoginPage); 

,但有一個例外:

System.InvalidOperationException: Page must not already have a parent. 

所以只是爲了好玩,我想我會嘗試最簡單的辦法:

LoginPage.Parent = null; 
ApplicationHomePage.Navigation.PushModalAsync(LoginPage); 

我永遠不會有一個後退按鈕,而iPad沒有之一,所以合作導航堆棧的新手並不重要(對嗎?)

這種導航「合法」的方法是什麼?是否會導致我目前沒有看到的一些問題?

+1

將您的整個應用程序顯示爲模式似乎是一個壞主意。我將啓動您的HomePage(或某個佔位符)作爲您的根,並將登錄顯示爲模式。登錄後,解除模態。當他們註銷時,彈出到根,然後再次顯示模態。或者有很多其他的方法可以使用。 – Jason

回答