我一直有這個參數,什麼是使某種組件UIViewController而不是一個視圖的理由是什麼?我一直假設每個屏幕有1個視圖控制器,但使用導航視圖控制器或類似的例外情況除外什麼時候應該製作UIView與自定義View Controller相比?
1
A
回答
3
當您需要完整的視圖控制器時,您創建了一個UIViewController
類。當您剛剛創建某種「小部件」時,您將創建一個UIView
,該小部件將被添加到父視圖(例如視圖控制器的視圖)中。
將視圖控制器視爲「屏幕」。該視圖控制器代表整個屏幕。它的主視圖可以添加很多子視圖。控制器負責訪問數據並協調視圖中的事件並向視圖提供數據。
按鈕是視圖。桌子是一個視圖。圖像是一個視圖。但視圖控制器將所有這些視圖組合在一起並將它們連接在一起。
2
你的問題是非常相關的MVC模式,以及如何分開控制器和視圖部分。一個屏幕的一個視圖控制器在一般情況下是有意義的,我記得以前它是在蘋果指南中提出的,現在它已經改變了,但在大多數情況下仍然有效。
iOS視圖庫非常全面,我通常不需要創建自定義視圖,而是自定義視圖控制器。因爲在MVC模式後面的應用程序中,viewcontroller是中間人與視圖和數據(模型)進行交互的視圖,所以您的視圖不應直接連接到您的模型,這會極大地限制其功能。想想看這個通用的ios視圖庫,如果新的類不需要包含複雜的邏輯(進行計算,與其他視圖或對象進行交互),則新類應與其他控件(如uibutton,uiswitch,uitableview)一起駐留。將用戶的交互通知給控制器就足夠了。
我自定義視圖的典型用法是當我需要uiviews的組合(即許多網頁中的內容滑塊,imdb中的電影頁面中的10個評級星)並且需要不同的表示(即,在餅圖中表示一些數據或改進進度條等)但除此之外,幾乎總是我去自定義視圖控制器。
相關問題
- 1. 什麼時候應該定義一個新的TensorFlow操作?
- 2. 什麼時候應該有人使用遠程屬性與自定義屬性
- 3. 什麼時候使用View()與RedirectToAction
- 4. 什麼時候view controller觸發它的前任viewDidLoad?
- 5. 什麼時候應該使用select與多線程比較?
- 6. 什麼時候應該使用AWS,什麼時候不使用
- 7. 什麼時候應該指定CurrentCulture或InvariantCulture,什麼時候應該讓它不指定?
- 8. 什麼時候應該強制自動更新?
- 9. 什麼時候應該調用* eval *來評估製作配方
- 10. 什麼時候應該擴展NSDocument,什麼時候應該擴展NSWindowController?
- 11. 什麼時候應該使用sed,什麼時候應該使用awk
- 12. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 13. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 14. 我們什麼時候應該上課,什麼時候不應該上課
- 15. 什麼時候應該使用async/await,什麼時候不用?
- 16. View和View Controller有什麼區別?
- 17. 什麼時候應該重新定義數字?
- 18. 什麼時候應該調用setContentAspectRatio?
- 19. 什麼時候應該考慮製作庫標題?
- 20. 什麼時候應該使用forEach?
- 21. 什麼時候創建自己的DLL應該在什麼
- 22. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 23. 什麼時候應該去接口,什麼時候去抽象類?
- 24. 什麼時候應該使用html5 sessionStorage?
- 25. 什麼時候應該使用setScriptTimeout?
- 26. 控制器什麼時候應該實例化?
- 27. 什麼時候應該使用git add?
- 28. 什麼時候應該調用Transaction.delistResource()?
- 29. 自定義UIView時保持比例
- 30. 什麼時候應該使用tempfile