1

サンプルフロー

MvvmCross を使用してこのフローを実現するにはどうすればよいですか? SplitView に関する N+1 チュートリアルを実行しましたが、カスタム プレゼンターを備えたメイン コントローラーとして単一の分割ビューを使用します。

私のアプリでは、デフォルトのプレゼンターで始まり、ホームがメイン画面であり、オプションの 1 つの分割ビューを表示する必要があります。これは、デフォルトの UISplitViewController を使用して可能ですか? または、カスタム コントロールを作成する必要がありますか? また、ユーザーはホーム画面に戻る必要があります。

4

1 に答える 1

3

MvvmCross プレゼンターには、非常に小さなインターフェイスがあります。

N=24 ビデオの分割ビューの例は次のとおりです。

public class SplitPresenter : MvxBaseTouchViewPresenter
{
    private SplitViewController _svc;

    public SplitPresenter(UIWindow window)
    {
        _svc = new SplitViewController();
        window.RootViewController = _svc;
    }

    public override void Show(Cirrious.MvvmCross.ViewModels.MvxViewModelRequest request)
    {
        var viewController = (UIViewController)Mvx.Resolve<IMvxTouchViewCreator>().CreateView(request);

        if (request.ViewModelType == typeof(FirstViewModel))
            _svc.SetLeft(viewController);
        else
            _svc.SetRight(viewController);
    }
}

これは UIKit と対話する C# にすぎないため、ユーザーが拡張することは非常にオープンです。

たとえば、次のことができます。

  • プレゼンターを拡張して、ナビゲーション コントローラーとスプリットビュー コントローラーの両方を含めると、ショー リクエスト中に RootViewController を適切に変更できます。

  • または、splitviewcontroller をナビゲーション コントローラーの子としてプッシュすることを検討することもできます (これにより、元に戻すのが簡単になります!)

  • または、splitviewcontroller をルート コントローラーのままにして、ログイン ビューをモーダル表示として上部に表示することを検討することもできます。

  • または...本当にオプションは開いています-これはUIKitのパワー、柔軟性、および時折の癖と組み合わされたC#です


補足: 個人的には、より複雑な UI を構築し始めると、プレゼンテーションの責任を集約し始めることがよくあります。たとえば、次のようになります。

  • ビューを所有するタブに新しいビュー/ビューモデルを表示する場所を決定するように要求するN=25プレゼンターで
  • このオペコード ブログ投稿では、CustomPresenter がさまざまなビューモデル リクエストに登録したフラグメント アクティビティ ホストのカスタム リストを保持しています (登録時とその後のリクエストに対する処理は完全に彼ら次第です)。

これは単なる C# であるため、あるパラダイム (タブなど) から別のパラダイム (splitView など) に変化する UI を構築するのはかなり簡単で、それらの UI は適切にカプセル化されています。

于 2013-07-18T10:46:04.177 に答える