簡體   English   中英

何時將UIViewController子類化為自定義子視圖?

[英]When to subclass UIViewController for custom subview?

我已經看到自定義子視圖實現為UIViewController子類,但可能已經實現為UIView子類。

我什么時候應該為子視圖子類化UIViewController而不是UIView 子類化UIViewController有什么缺點嗎?

就個人而言,當我需要一些重要的邏輯時,我會使用UIViewController子類。 此外,如果我正在尋找您從UIViewController獲得的一些行為,例如以模態方式或在導航控制器中呈現它。

如果你做的事情相當簡單或輕量級,那么UIView子類通常就足夠了。 在制作自定義按鈕和表格視圖單元格時,我似乎最常使用它們。

根據我的經驗,我發現自己使用了比UIView子類更多的UIViewController子類,但這可能不是最好的,只是碰巧我覺得使用視圖控制器而不是直觀視圖更舒服。

看看Apple對Controller ObjectsMVC設計模式的看法

在iOS控制器中,通常希望至少填充以下一個角色:

  1. 協調控制器提供特定於應用的邏輯。 它們響應委托消息,通知和IBActions。 協調控制器還設置其他對象之間的連接,並經常管理這些對象的創建和銷毀。

  2. 視圖控制器,特別是UIViewControllers,管理一個“屏幕”內容的顯示並觸發轉換到下一個“屏幕”。 它們響應內存警告和旋轉事件。

  3. OS X中存在中介控制器,但它們的作用通常由iOS中的視圖控制器填充。 它們充當觀點和模型之間的中介; 當視圖在模型更改時接收輸入和更新視圖時更新模型。

如果您正在實現的行為符合其中一個類別,則可能需要創建一個控制器對象。 如果您的邏輯僅涉及數據顯示(並可能響應用戶輸入),那么它可能屬於視圖層。 如果您的邏輯是關於數據本身,那么它可能屬於模型。 如果您無法在任何這些層中找到適合您的邏輯的那么,那么您可能應該將其作為不同職責的組合進行建模,這些職責屬於不同層中的不同對象。 即,請求從中介視圖控制器顯示數據的視圖。

如果要在“視圖”中使用AdBannerView,也可以將UIViewController子類化。 AdBannerView需要一個UIViewController才能工作。

我遵循的拇指規則是,如果您正在進行自定義繪圖,則子類UIView。 否則,繼承UIViewController。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM