2012-12-12 24 views
4

目前我正在使用Singleton類來完成一些工作,但我想知道是否有更好的東西。班級管理視圖控制器流程模式

我有一個完全動態的工作流程的應用程序。它使用導航控制器,但視圖控制器的順序完全取決於從我們的服務器下載的一些數據。

整個工作流程被下載並保存在一個數組中。

該應用程序的「主菜單」屏幕有幾個選項(設置,最近等...),這些都是固定的,但其中一個是動態的。它始終以相同類型的視圖控制器開始,但從此開始取決於您選擇的內容。

說明

有4種不同類型的這些動態控制器。

  • 表視圖控制器具有單選擇和詳細指標。
  • 帶有多個選擇和複選標記的表視圖控制器。
  • 帶有文本字段和鍵盤的視圖控制器。
  • 用於在服務器上搜索帳戶的視圖控制器(與其他相關的VC)。

當您在主菜單上按下選項「新建事件」時,菜單將關閉到單身(EventManager)並告訴它開始一個新事件。

單身人員然後在導航控制器上推動單個選擇動態視圖,併爲其提供初始選項。

從這裏單身人士拿起所有的選擇,並找出接下來需要什麼類型的視圖。

我希望這是決策意識

反正,我不喜歡單例模式這裏,我不認爲它應該是一個單例。

我想要的是一個我可以從ViewController創建的類,然後這個類將控制不同視圖控制器負載之間的推送和彈出以及數據流。然後,當您返回主菜單時,此課程可能會消失,因此我每次都會創建一個新課程。

有沒有一種模式,我可以看看會做到這一點?還是應該像現在一樣堅持單身?

我希望這是有道理的。

編輯

我可以用這個UIPageViewController?那麼UIPageViewController的數據源/委託對象將代替我正在使用的Singleton ...或其他東西?

將相片從Twitter請求

enter image description here

每個VC沿水流不知道什麼凸輪之前或隨之而來。他們所做的就是回電給單身人士說:「這個數值已被選中」或「這個文本已被輸入」等等......

然後,單身人士存儲那個信息並計算出接下來會發生什麼並將下一個VC推到堆棧。

它需要能夠移動沿着堆回去,這樣用戶可以返回改變的東西等等

這一切工作,因爲它是我只是不喜歡使用單例。

回答

1

很多評論在這裏按重要性順序。

你在這裏描述的一切聽起來都非常好,甚至到了命名。 「EventManager」類似於它管理系統中所有「事件」的聲音(所以我期望有一個類叫Event,但這是一個小小的詭計,名字可能仍然非常好)。還有其他好的設計,但我不會有任何問題與你的。

我同意這看起來很適合UIPageViewController。你當然應該調查一下,看看它是否合適。如果可以的話,使用內置控制器總是很好的。

沒有理由強烈避免單身人士。它們是iOS開發的一個自然部分,在可可設計中非常普遍。他們通常應該是"shared" singletons(絕不會創建「嚴格」的單身人士,覆蓋+allocWithZone:)。這只是創建一個易於訪問的實例,而不是一個真正的「單身人士」。這是類似於NSNotificationCenter這樣的工作方式,並且通常是非常好的模式。

單身是最好的,當系統的許多隨機部分需要直接訪問它們並將它們傳遞給每個人都會有很大的開銷(特別是如果許多部分你必須通過對象不要需要它自己)。再次,想想NSNotificationCenter。如果它的用戶大多是連續的(即大多數對象可以通過它自己真正需要它),那麼只需在程序開始時創建一個並傳遞它。這聽起來像你的情況,所以你對此的直覺似乎很好。只是解除它並傳遞它。易於更改。

但我肯定會深入探究UIPageViewController。它可以很好地匹配你的問題。

+1

非常感謝。我想我只是想對我使用的模式進行驗證。我會看看UIPageViewController,但不太緊急,要扔掉我的東西。我知道很多人使用單例作爲一個實例的懶惰方式,我只是想確保當另一個選項可用時我沒有這樣做。謝謝。 (另外,還有一個叫Event:D的班級) – Fogmeister

+0

再次感謝您的評論。在看到您的帳戶後,我做了一些搜索,實際上我剛剛購買了您的書。大聲笑。再次感謝您的回覆,毫無疑問,我將從本書中獲得更多有用的幫助。 :-) – Fogmeister

相關問題