2013-10-08 30 views
0

我想問的是一個設計問題。誰應該定製CustomUIView的外觀

我有一個CustomUIViewController處理控制器視圖內的一些子視圖。

這兩種觀點是邏輯上不同的,並且具有不同的角色:

  • 第一子視圖包含UIControl對象,用戶可以與 (遊戲操作)相互作用。
  • 第二個子視圖只顯示遊戲進度。

問題是我需要有多個遊戲控件的實現(比方說兩個圖形完全不同),並讓用戶選擇他喜歡的那個。

我的問題是:將CustomUIViewController的代碼與兩個遊戲控件實現(包括用於自定義每個遊戲控件的外觀的圖形資源)結合起來會被認爲是一個好習慣嗎?或者如果遊戲控制視圖的外觀設置由另一個對象(工廠,委託或類似的東西)處理,會更好嗎?

你能提出任何可以幫助處理這種用例的模式嗎?

預先感謝您。

+0

控制器通常會控制。您也可以讓控制器監控用戶選擇的變化,然後在遊戲控制視圖上設置一個標誌。該標誌指示在顯示時使用哪些圖形(並且標誌變化會導致重新顯示/更改圖像資源),具體取決於您當前如何分配有關圖像名稱的知識。 – Wain

+0

@Wain:哪一個被認爲是關於圖像名稱的最佳實踐:將其嵌入到CustomUIViewController中,或者將其放入專門的Game Control視圖中? – Gabriele

+1

我會選擇他知道圖像名稱的控制器。我不會說這兩者都是最佳做法。只要結構合理且一致,視圖就可以指定其默認圖像,並向用戶(控制器)提供更改它們的選項。如果視圖呈現幾種顯示風格,那麼它可以管理這一切。考慮一下'UITableView'和它提供的功能... – Wain

回答

0

我建議你爲兩個視圖創建單獨的類,您將在CustomUIViewController上添加兩個視圖。 然後,您可以在相應的類中添加所需的任何組件和功能。 這將很容易理解代碼,如果您希望將某些擴展功能添加到特定的子視圖,您也會感到輕鬆。 不要把所有的東西放在同一個班級,你最終可能會搞砸了。

如果可能的話總是嘗試按照MVC Architecure

+0

我完全同意你的看法。兩個遊戲控制視圖將是兩個不同的類。它們的內部結構將完全不同,但是每個Game Control類都將向CustomUIViewController公開相同的接口。但是誰應該具備關於圖像名稱的知識?我應該將其嵌入到專門的遊戲控制視圖中還是嵌入到包含它的CustomUIViewController中? – Gabriele

0

子類2的UIView你要使用,這樣就可以有比添加到您的ViewController 2個自定義視圖。

通過這樣做,您可以在自定義UIView實現中獲得觸摸事件,並且這將是一種更簡單的方法,然後將所有內容放在同一個類中。