2016-07-04 10 views
1

MvvmCross-Formsアプリケーションのログインページを実装しようとしています。アプリケーションが起動されると、ログインしていなければログイン画面が表示され、ログインしていない場合はホームページに表示されます。ユーザはログインするとホームページに誘導され、ホームページからログアウトするとログインページに誘導されます。かなり標準的なもの - あなたは認証付きのアプリケーションから何を期待していますか?Xamarin MvvmCross-Formsを使用したログインページ - Androidのバックナビゲーションを防止する

これはMvvmCross ViewModelナビゲーションを使用して実装しましたが、すべてのナビゲーションでAndroidのタイトルバーにある[戻る]ボタンを押すか、ハードウェアの戻るボタンを使用できます。ユーザーとしては、ログイン後にホームページを 'ルート'ページにして、明示的にログアウトすることでログイン画面に戻ることができます。

Xamarinフォームでこれを行う典型的な方法は、Show()への呼び出しをインターセプトし、ホームページまたはログインページへのナビゲーションでバックスタックをクリアする、Droidプロジェクトの下にカスタムPage Presenterを作成することです例えば、Xamarin MvvmCross Android Prevent Back Button returning to previous Viewの最上位の回答)。しかし、MvvmCross-Formsは意図的にあなたがこの機能を実装できないようです。MvxFormsDroidPagePresenterクラスは、アンドロイド特有のMvxAndroidViewPresenterではなく、クロスプラットフォームMvxFormsPagePresenterから継承しています。

私は、ログイン用に1つのViewModel/Viewとホームページを使用するか、MvxAndroidViewPresenter機能の一部を切り取り、自分のカスタムAndroidプレゼンターに入れるかの2つのオプションがあります。この動作はMvvmCross-Formsでどのように慣用的に実装されますか?

+0

https://github.com/conceptdev/xamarin-forms-samples/tree/master/LoginDemoを試すことができます – Vishnu

答えて

0

アプローチが間違っています。あなたがしたいことはあなたのホームページをrootとして設定し、その直後にユーザーがログインしていない場合のログインページのModalPushを実行します。ユーザーがログインするとModalPopを実行し、ホームページのrootに戻ります。

ユーザーがログインしている場合は、自分が正しいと思われる場所(ルート)にホームページがあります。

これが役に立ちます。

関連する問題