0

スタックからアクティビティを削除する方法を見つけようとしています-アプリにフローがあります:アクティビティ/ビューモデルa->アクティビティ/ビューモデルb->アクティビティ/ビューモデルc。cでは、ユーザーは日付を選択するか、戻ることができます。彼が戻った場合、彼はbに戻されるべきです。ただし、日付を選択した場合、アクティビティ/ビューモデルbの新しいインスタンスに転送され、アクティビティ/ビューモデルbの「古い」インスタンスは廃止されるため、削除する必要があります。

Stuart Lodgeからの提案(同様のスレッドで、モノタッチのみ)はRequestRemoveBackStep()を使用することでしたが、使用方法がわからず、例を見つけることができません。

誰かが私を正しい方向に向けることができますか?

よろしく

4

1 に答える 1

1

このRequestRemoveBackStep()メソッドはIMvxViewDispatcherインターフェースのメンバーであり、一部のプラットフォームに実装されています。

public interface IMvxViewDispatcher : IMvxMainThreadDispatcher
{
    bool RequestNavigate(MvxShowViewModelRequest request);
    bool RequestClose(IMvxViewModel whichViewModel);
    bool RequestRemoveBackStep();
}

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross/Interfaces/Views/IMvxViewDispatcher.csから

ただし、これを常に行うのは完全に簡単ではありません...たとえば、Droidでは、現在、次のように実装されています。

    public bool RequestRemoveBackStep()
    {
        // not supported on Android? Not sure how to do this currently...
        return false;
    }

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Droid/Views/MvxAndroidViewDispatcher.csから

この機能についてログに記録された問題があります-たとえばhttps://github.com/slodge/MvvmCross/issues/80-しかし、この機能は将来のMvx実装から単に削除される可能性があります-特にそれを行うのは非常に簡単ではないためすべてのプラットフォームのすべてのビュー。


このタイプの機能が今必要な場合は、この機能を実装する独自の方法を見つける必要があります...特定のユースケースが何であるかに応じて(申し訳ありませんが、現在のユースケースの詳細は私にはわかりません)質問から)。

利用可能ないくつかの技術的なルートがあります:

  • NoHistoryフラグを使用する
  • RequestClose(oldviewModel)通話の使用
  • ロジックを追加するPresenter
  • を使用しMessengerてビューを要求し、自分自身を閉じます。
于 2013-01-21T20:29:19.113 に答える