2011-08-19 75 views
0

我有一個iPad應用程序,它有一個主ViewController和它的主視圖像往常一樣,但我有一些覆蓋(實現爲單獨的視圖)。我希望所有這些視圖都由主視圖控制器控制/擁有。單視圖控制器與MonoTouch中的多個視圖

覆蓋視圖集被打包成一個XIB(僅用於IB設計目的,沒有代碼),並從主視圖控制器手動加載,併爲每個視圖分別轉換爲相應的View類,作爲單獨實現每個.cs文件。

一切工作正常,但因爲在視圖XIB中,所有者被設置爲主ViewController類(爲了生成事件,插座的設計器代碼),它還爲主視圖控制器類生成了Register屬性,它與已經在主視圖控制器XIB設計器文件中生成的相同的寄存器屬性相同。

我的問題是:有沒有辦法阻止MonoTouch/IB爲視圖XIB自動生成Register屬性?

感謝, 佩德羅

我使用的XCode/IB 3.2.6,4.0.5 MonoTouch的,MonoDevelop的2.4.2,MonoFramework 2.10.4

+0

[XIB代](http://ios.xamarin.com/Documentation/XIB_Code_Generation)它是關於交叉XIB場景不明確。 –

+0

我實現了一個基於.NET設計模式的解決方案,當StackOverflow允許我在幾個小時內發佈它。 –

回答

0

好吧,我實現了一個解決方案,它滿足我以前的要求但有一些缺點,可能適用於某些場景,而不適合其他人使用。

我在後面的XIB /代碼中實現了我的主視圖控制器,並將其命名爲MainBaseViewController。它只有最小的UI元素,因爲它主要是所有其他視圖的可視化容器。然後,我在一個名爲MainViewController的獨立.cs文件中創建了一個類(從MainBaseViewController繼承而來),它是一個分類類,用於連接由視圖XIB生成的設計器代碼。該類將保存視圖控制器的所有邏輯。唯一的缺點是MainBaseViewController中的任何UI元素(出口)都將由MonoTouch生成爲私有,並且我需要在類實現中創建一些受保護的訪問器,但它的確定是因爲它只是視圖插座(但這可能是如果基XIB有許多控制)問題

恢復:爲

  • 的MainBaseViewController類和廈門國際銀行將有保護的存取ny網點,並且只有應用程序中其他視圖的基本UI容器。

  • 的MainViewController是一個cs文件,並且是從MainBaseViewController繼承的部分類,實現

  • 的意見存儲在MainViews XIB的視圖控制器的所有邏輯(管理所有其它視圖)(其中沒有代碼),視圖的文件所有者是MainViewController類,它生成MainViewController類可訪問的所有插座和事件。

  • 單獨的.cs文件爲視圖XIB中包含的每個視圖實現了每個特定的邏輯,並且它是在主控制器從視圖XIB動態加載視圖時創建的。

該解決方案允許以存儲在另一個(除了UI)和特定的視圖邏輯SEPA

任何其它溶液或更好的設計圖案在一個單獨的文件中的視圖,該視圖控制器邏輯?另一個更簡單的選擇是隻粘貼主控制器XIb內的所有視圖,失去控制器和視圖的獨立性。

謝謝,佩德羅

上MonoTouch的文檔中
相關問題