2012-05-09 14 views

答えて

7

MvvmCrossは、すべてのViewModelが単に「通常のページ」であることを前提としています。つまり、iOS/MonoTouchではUINavigationControllerを使用して提示されたUIViewControllerを意味します。

このプレゼンテーションから、タブ付きディスプレイ、モーダルディスプレイ、スプリットコントローラ、ポップアップなどに移動するには、MonoTouchアプリケーション内のPresenterロジックを調整します。

発表者の仕事は、実装することです:

public interface IMvxTouchViewPresenter 
{ 
    void Show(MvxShowViewModelRequest view); 
    void Close(IMvxViewModel viewModel); 
    void CloseModalViewController(); 
    void ClearBackStack(); 
    bool PresentModalViewController(UIViewController controller, bool animated); 
    void NativeModalViewControllerDisappearedOnItsOwn(); 
} 

アプリの使用プレゼンターは、AppDelegateの建設に選択されている - 例えばTwitterSearchがiPhoneとiPad用に異なるプレゼンターを構築する方法を参照してください。


幸い、簡単なモーダル支援のために、利用可能な標準のプレゼンターの1はこのプレゼンターが提示されているビューはIMvxModalTouchViewマーカーインターフェイスを持っているかどうかを確認しますMvxModalSupportTouchViewPresenter.cs

である - それはview is IMvxModalTouchViewをテストします。このインタフェースが存在する場合、「通常のナビゲーション」ではなく、ビューのモーダル表示が使用されます。これを使用するには

、何かにあなたのAppDelegateのコードを変更:

public class MyView : MvxBindingTouchViewController<MyViewModel>, IMvxModalTouchView 
{ 
     // .... 
} 
+1

ニース1スチュアート:

public override bool FinishedLaunching(UIApplication app, NSDictionary options) { window = new UIWindow(UIScreen.MainScreen.Bounds); // initialize app for single screen iPhone display var presenter = new MvxModalSupportTouchViewPresenter(this, window); var setup = new Setup(this, presenter); setup.Initialize(); // start the app var start = this.GetService<IMvxStartNavigation>(); start.Start(); window.MakeKeyAndVisible(); return true; } 

は、その後、あなたのモーダルビュー(複数可)にマーカーインターフェイスを追加します。途中で素晴らしいフレームワーク。これは大きなプロジェクトを支えています。 – Kevin

+0

クール - チャットに関するご質問がある場合は、http://jabbr.net/#/rooms/mvvmcrossで見つけてください。そうでなければ、SOは完璧です – Stuart

+0

また、妥当なサイズのiPhone/iPadアプリの場合、ある時点で自分のプレゼンター、特にiPadを書くことになってしまう。 – Stuart

関連する問題