2013-11-26 61 views
3

繼Xcode中使用Storyboards的iOS應用程序的MVC設計模式後,我注意到我可以將UOabels,UIImageViews等的IBOutlets放入ViewController或UIView本身。在使用MVC設計模式的Storyboard中正確使用IBOutlets

方案1:

模型類 - >視圖控制器(IBOutlets) - 在故事板場景> UIViews

  • 所述的ViewController(VC)抓住從Model

  • 必要的數據VC中的IBOutlets用於設置故事板中各種UIView中的文本和圖像

方案2:

模型類 - >視圖控制器 - 在故事板> UIViews(IBOutlets)

  • 的VC從Model

  • 的VC呼叫在每個方法抓起數據UIView子類

  • 每個UIView子類中的那些方法通過該UIView中的IBOutlets設置相關UIView中的文本和圖像

我發現,在每個視圖中有很多UIViews和UILabels和UIImageViews時,場景2更易於管理。另一種方法可能導致單個視圖控制器中的很多IBOutlet。

使用Storyboard時最好遵循哪種方法?

回答

0

你的觀察是正確的,第二種情況導致更易於管理的設計。

你的兩個方案之間的差別主要在其使用封裝方式:第一種情形封裝上查看+ - 視圖 - 控制器的水平,讓控制器可自由訪問的事情,理應單獨視圖的一部分,而第二場景正確限制IBOutlets對視圖類的訪問,迫使視圖控制器通過您在視圖中公開的方法與視圖控制器進行交互。

因此,第一種方案會在視圖與其控制器之間創建緊密耦合,而第二種方案會顯着減少這種耦合。

當然還有一個折衷:你用更多的代碼支付更少的耦合。直到某一點,這並不重要:當您的視圖和其控制器相對較小時,很容易將視圖及其相關視圖控制器的組合作爲單一對象進行管理。隨着觀點的複雜性增加,使用第二種情景的好處變得更加明顯。這適用於封裝的所有用途,不僅適用於iOS場景中的MVS:您的項目越大 - 使用適當封裝的收益越高。

+0

因此,基本上,第一種場景是簡單的故事板場景,第二種場景是包含多個uiviews的複雜場景? – wigging

+0

嗯,這是有道理的,謝謝你的幫助。如果您知道將MVC應用於具有Storyboard的較大iOS項目的任何資源,請在答案中張貼一些鏈接。 – wigging

相關問題