[英]Subclass UIViewController or create a custom NSObject when the view is not fullscreen
[英]When to subclass UIViewController for custom subview?
我已經看到自定義子視圖實現為UIViewController
子類,但可能已經實現為UIView
子類。
我什么時候應該為子視圖子類化UIViewController
而不是UIView
? 子類化UIViewController
有什么缺點嗎?
就個人而言,當我需要一些重要的邏輯時,我會使用UIViewController
子類。 此外,如果我正在尋找您從UIViewController
獲得的一些行為,例如以模態方式或在導航控制器中呈現它。
如果你做的事情相當簡單或輕量級,那么UIView
子類通常就足夠了。 在制作自定義按鈕和表格視圖單元格時,我似乎最常使用它們。
根據我的經驗,我發現自己使用了比UIView
子類更多的UIViewController
子類,但這可能不是最好的,只是碰巧我覺得使用視圖控制器而不是直觀視圖更舒服。
看看Apple對Controller Objects和MVC設計模式的看法
在iOS控制器中,通常希望至少填充以下一個角色:
協調控制器提供特定於應用的邏輯。 它們響應委托消息,通知和IBActions。 協調控制器還設置其他對象之間的連接,並經常管理這些對象的創建和銷毀。
視圖控制器,特別是UIViewControllers,管理一個“屏幕”內容的顯示並觸發轉換到下一個“屏幕”。 它們響應內存警告和旋轉事件。
OS X中存在中介控制器,但它們的作用通常由iOS中的視圖控制器填充。 它們充當觀點和模型之間的中介; 當視圖在模型更改時接收輸入和更新視圖時更新模型。
如果您正在實現的行為符合其中一個類別,則可能需要創建一個控制器對象。 如果您的邏輯僅涉及數據顯示(並可能響應用戶輸入),那么它可能屬於視圖層。 如果您的邏輯是關於數據本身,那么它可能屬於模型。 如果您無法在任何這些層中找到適合您的邏輯的那么,那么您可能應該將其作為不同職責的組合進行建模,這些職責屬於不同層中的不同對象。 即,請求從中介視圖控制器顯示數據的視圖。
如果要在“視圖”中使用AdBannerView,也可以將UIViewController子類化。 AdBannerView需要一個UIViewController才能工作。
我遵循的拇指規則是,如果您正在進行自定義繪圖,則子類UIView。 否則,繼承UIViewController。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.