2017-10-20 13 views
0

Xamarin.Formsアプリから始まり、かなりのページがあり、ページ間のナビゲーションはアプリによって完全に処理されます。具体的には戻るボタンはありません。私たちはiOSのリリースを予定しているだけなので、問題はありません。Xamarin Page Navigation(again)

最初に表示されるページはログインページです。ログインすると、ホームページに移動します。この移行を実行するには、

LoginPage.Navigation.PushModalAsync(HomePage) 

としてください。

ホームページで[ログアウト]ボタンを押すとPopModalAsync()を呼び出すことができますが、問題はログアウトボタンがすべてのページに存在するため、次のようなパスをたどる可能性があります。

ログイン - >ホーム - >作成 - >フォーマット - >印刷 - >ログアウト

と私はすぐにログイン画面にジャンプする必要があります。私が試してみようと思いました楽しみのためだけにそう

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

は、ユーザーがログアウトボタンを押したのであればホームページ上で、私は

ApplicationHomePage.Navigation.PushModalAsync(LoginPage); 

を呼び出してみましたが、例外が発生しました簡単な解決策:

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

私は戻ってボタンを持たないだろうし、iPadは1つもないので、ナビゲーションスタックの中身は本当に重要ではありません(右?)

"法的"をナビゲートする方法はありますか?私が今見ていない問題を引き起こすのだろうか?

+1

あなたのアプリケーション全体をモーダルとして表示することは悪い考えです。代わりにホームページ(またはいくつかのプレースホルダー)をrootとして起動し、ログインをモーダルとして表示します。ログインしたら、モーダルを閉じます。彼らがログアウトすると、rootにポップして、再びモーダルを表示します。それとも、他にもたくさんのアプローチがあります。 – Jason

答えて

1

I think you can take a look to this

あなたはNavigationStackにログインページを追加しないはずです。 MainPageプロパティの変更は良い解決策です。