2014-02-18 116 views
3

我在開發iOS應用程序的開始階段我無法理解MVC(模型 - 視圖 - 控制器)設計模式。我以爲我把它放下了,但我讀得越多,我越感到困惑。我不知道這應該是一個iOS的具體問題,或者每次使用MVC都是如此。我沒有使用故事板順便說一句,我想以編程方式做到這一切。視圖控制器應該在視圖中應該是什麼?

我相信我理解控制器和模型之間的基本關係,它是分離的視圖和控制器,我沒有得到。假設我想創建一個UIButton並將其顯示在屏幕上。我應該啓動控制器還是視圖中的按鈕?控制器負責顯示什麼,正確的?你不是隻需要調用一個視圖來顯示它,而不用擔心在控制器中創建按鈕?據我所知,視圖控制器只是控制器,因此應該是控制的視圖,而不是的視圖。看起來大多數人都是在視圖控制器中做所有事情。我想我的問題歸結爲什麼代碼去哪裏?

+0

蘋果有一個文檔:https://developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MVC.html –

+0

我有2個指導建議給你:[Model-View -Controller](https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/Model-View-Controller/Model-View-Controller.html#//apple_ref/doc/uid/TP40010810- CH14)和[適用於iOS的View Controller編程指南](https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html) – Desdenova

+0

注意:「視圖控制器」不是MVC模式的一部分。這是該框架特有的東西。 –

回答

1

UIViewController是代碼的MVC模式中的控制器部分。

  • M(模型)
  • C(ontroller)
  • V(查看)

控制器處理不同意見之間的導航等

從這裏你可以得到更多的想法:view and viewcontroller

A view is a o被繪製到屏幕上的對象。它也可能包含其他視圖(子視圖),並將其與其一起移動。視圖可以獲得觸摸事件並改變其視覺狀態作爲迴應。視圖是愚蠢的,不知道你的應用程序的結構,只是被告知在某種狀態下顯示自己。

視圖控制器不能直接繪製到屏幕上,它管理一組視圖對象。視圖控制器通常具有包含許多子視圖的單個視圖。視圖控制器管理這些視圖的狀態。視圖控制器很聰明,並且知道你的應用程序的內部工作。它告訴愚蠢的觀看對象該做什麼以及如何展示自己。 視圖控制器是整個應用程序和屏幕之間的粘合劑。它控制,它根據 視圖控制器是一個應用程序的數據和其外觀之間的重要聯繫您的應用程序

關於視圖控制器的邏輯擁有的意見。每當iOS應用程序顯示用戶界面時,顯示的內容都由一個視圖控制器或一組彼此協調的視圖控制器進行管理。因此,視圖控制器提供了構建應用程序的骨架框架。 iOS提供了許多內置的視圖控制器類來支持標準的用戶界面部分,例如導航欄和標籤欄。作爲開發應用程序的一部分,您還可以實現一個或多個自定義控制器來顯示特定於您的應用程序的內容。

0

不確定任何iOS細節,但從PHP的角度來看,控制器可以獲取視圖所需的任何數據(通過模型),然後將該數據傳遞給視圖。

該視圖僅將屏幕渲染到屏幕上,並且應該沒有邏輯。

從一個網站點,如果你想在屏幕上顯示一個用戶名

所以:

控制器會從模型要求的用戶名 該模型將得到的用戶名,並返回到控制器 然後控制器會將用戶名傳遞給視圖 然後視圖會呈現用戶名。

希望有所幫助。

+0

謝謝!幫了一下。 – rooskist

0

爲了不具體,但上層,你可以說如下:

你可以把控制器代碼類擴展UIViewControllers

你可以把視圖代碼類擴展UIView

您可以將模型代碼放入課程中延伸NSObject

相關問題