1

MVVMCross、iOS のみを使用してログイン/ログアウトを実装する必要があります。ユーザーがログインした後、ビューを閉じて、「実際の」最初のビューをルートコントローラーにしたいと考えています。ログアウトの場合は、逆に同じことをしたいと思います。LoginViewModel が要求されるたびに、ルートをクリアして置き換えます。

このRemove ViewController from stackは、ClearTopパラメータがあることを示していますが、v3ではなくなっているように見えますか?

次に、さまざまな MvvmCross (v3) プラットフォームで GoBack を処理するための最良の方法は何ですか。このプレゼンターを実装しました。

        public override void Close(IMvxViewModel toClose)
        {
            if (toClose is LoginViewModel)
            {
                ClearBackStack();
                Show(new MvxViewModelRequest() { ViewModelType = typeof(FirstViewModel)});
                return;
            }
            base.Close(toClose);
        }

        public override void Show(MvxViewModelRequest request)
        {
            if (request.ViewModelType == typeof (LoginViewModel))
            {
                ClearBackStack();
            }
            base.Show(request);
        }

これはこれを処理する正しい方法ですか?より簡単なメカニズムはありますか (v3 以前のようなもの)? 代わりに ChangePresentation をオーバーライドする必要がありますか?

また、ビューから ShowViewModel を呼び出すメカニズムはありますか? IMvxViewDispatcher を解決する必要がありますか、それとももっと簡単な方法がありますか?

4

1 に答える 1

2

はい、カスタム プレゼンテーション手法を実行したい場合、最も簡単な方法は独自のビュー プレゼンターを実装することです。

これに関する紹介といくつかのリンクについては、「MvvmCross の別のビューで SplitView を実装するにはどうすればよいですか?」を参照してください。

解決された IoC オブジェクトを使用したナビゲーション ロジックなど、ビューに直接コードを自由に記述できます。ただし、mvvmCross は、特に「ロジック」がプラットフォーム間でより簡単に共有されるように、このロジックをビューモデルに配置することを奨励しようとします。

于 2013-07-19T06:30:18.970 に答える