2012-06-14 76 views
4

我在其他地方的SO &上搜索MvvmCross & Modal,但現有的一個答案對我們沒有幫助。MvvmCross從Tab中使用模態ViewController

我們正在開發一個跨平臺的應用程序,使用MonoTouch & MvvmCross,這似乎是非常強大的組合。但是,我們正在導航中遇到一些問題,我們正在逐漸破解!目前的問題是 -

該應用程序與TabBarController運行,並且每個選項卡有進一步級別的導航 - 這工作正常。然而,客戶端需要其中一個選項卡上的「開始」按鈕來調出一個模式視圖(隱藏其他所有內容,特別是標籤欄),然後該模式視圖具有與UINavigationController相同的方式工作,具有該能力隨時彈出回到tabBarController。

我們設法提出了一個模態視圖,但我們一直在從這裏加載新視圖並彈出回來。

任何幫助/建議表示讚賞!

回答

5

我想你要做的是自定義演示文稿,以便它將UIViewController包裝在UINavigationController中 - 然後以模態方式呈現該UINavigationController?

爲了實現這一目標,從@DeapSquatter最近拉請求的代碼可能會幫助 - https://github.com/slodge/MvvmCross/pull/9 - 我認爲你可以爲了達到效果使用他modal nav presenter您正在尋找:

 if (view is IMvxModalTouchView) 
     { 
      if (_currentModalViewController != null) 
       throw new MvxException("Only one modal view controller at a time supported"); 

      var newNav = new UINavigationController(); 
      newNav.PushViewController(view as UIViewController, false); 

      _currentModalViewController = view as UIViewController; 

      PresentModalViewController(newNav, true); 
      return; 
     } 

架構mvvmcross在這裏是故意可擴展和可配置的 - 雖然我們包含一些基本的Presenter類,但很可能人們會想要定製如何在逐個應用程序的基礎上呈現不同的視圖。除了最簡單的演示應用程序之外,我預計大多數mvvmcross應用程序都會隨附一個自定義演示程序。

希望幫助

斯圖爾特

+0

非常感謝這個 - 我不會有機會嘗試,直到週末,但我會及時向大家發佈。 – SomaMan

+0

我一直在修改主持人,現在我可以看到它是如何使用的 - DeepSquatter的示例在最終確定發生了什麼的過程中提供了重要幫助。當我們的項目進一步發展時,我確信它可以做到它的意圖,我會上傳代碼,以防有人發現它有用。謝謝! – SomaMan

+1

如果像我們一樣遇到viewmodel顯示代碼運行但沒有任何內容可視顯示的情況,請仔細檢查Presenter的CurrentTopViewController是否符合您的期望。我們必須重寫Presenter的屬性「CurrentTopViewController」,以便正確的視圖呈現模態視圖。 –

相關問題