2012-11-14 88 views
1

我在故事板這樣的觀點: view consist of fixed controls and controls that changes according to the type of controller控制多個視圖的最佳做法是什麼?

,你可以看到有一些固定的控制,和其他人,根據屏幕的類型而改變。 你認爲哪個更好?

1-用於多個屏幕的相同視圖控制器。 (更多代碼來控制視圖)

2-在同一屏幕中添加所有控件,然後通過代碼隱藏和顯示它們? (亂碼)

3-查看每個屏幕的控制器。 (複製代碼)

回答

3

不要使用「窗口」這個詞,它可能會導致對你想說的內容的不同解釋。使用單詞「屏幕」或「屏幕的部分」。在這種情況下,我會使用一個容器UIViewControllers。要在此之間進行通信,請使用KVONSNotificationCenter(很可能是第二個)。還要確保沒有數據源直接在UIViewController上(如數組或字典)。將數據源保存在其他地方,所有UIViewController(或任何類別)都可以輕鬆訪問。你可以去一個單身人士。

將數據源置於遠離而不是直接位於UIViewController的位置,爲您提供了更多的代碼靈活性。如果你需要使用新的UIViewController,沒有什麼改變,他仍然可以從同一點請求資源。所以記住這一點。


編輯1

數據源也是視圖控制器裏面,有屏幕之間沒有 相互作用,它是相同的屏幕,但某些控件根據它的類型 變化,你覺得我現在必須做 ?

用這種方法的問題是,如果你需要,出於某種原因添加新的UIViewController,也使用相同的數據源,你怎麼現在怎麼辦?我總是儘可能地從數據源中解耦UIViewController。否則,如果應用程序發生變化(客戶需求發生變化),您將來可能會遇到問題。再次,將數據源移動到適當的類,並使用單例訪問它。

UIViewController <=> Singleton <=> Data Source 

所以,現在你的建議,使多個視圖控制器與多屏?

我建議UIViewController作爲其他人的容器UIViewControllers。對我而言,在我去的時候組合屏幕更有意義,而不是在一個地方做所有事情。

+0

當前所有視圖都具有相同的視圖控制器,它們都具有連接到相同視圖控制器的插座。 數據源也在視圖控制器內部,屏幕之間沒有交互,屏幕是相同的,但是一些控件根據其類型而改變,您認爲我現在必須做什麼? – Mhdali

+0

這是一種可能性,雖然我更喜歡「分而治之」。 – Peres

+0

順便說一下,數據源不是問題,因爲所有屏幕與數據源的交互方式都是一樣的,所以現在您建議使用多個屏幕製作多個視圖控制器? – Mhdali

0

我肯定會去沒有3.這種方法是最靈活的!並且它很乾淨=>保持良好

相關問題