2011-12-24 22 views
1

我的意思是符合OOP和MVC。子類化UIView的正確基本原理是什麼?

具體來說,我已經計劃了一個UIView XIB文件,它有很多動態更新的UILabel,每當用戶選擇一些內容時都會更改:兩個時間戳,兩個持續時間和兩個名稱。這是用戶看到的界面的「標題」部分。

我看到幾個選項 1.在視圖控制器中創建所有內容,將UIView作爲子視圖添加到主視圖,並使用屬性跟蹤UILabel子視圖。但是這迫使我爲視圖控制器添加了很多屬性。 2.子類UIView並添加UILabels作爲UIView的屬性,從而保持控制器「更清潔」。 3.使用XIB文件(但讓我們假設我想以編程方式執行此操作)。我在問這個,因爲我不斷得到UIView應該被分類爲「自定義繪圖」的印象,而我的理由更多地沿着「保持我的控制器清潔而沒有6 UILabel屬性」這一句。

+1

根據UILabels的性質,您可能需要考慮使用數組或字典來存儲它們,而不是將它們作爲屬性單獨存在。 – john 2011-12-24 10:01:07

回答

2

不要繼承UIView這個。您應該將uIView子類化爲自定義繪圖,或者在某些情況下對觸摸進行自定義處理(但通常有更好的方法來處理觸摸)。

把所有東西放在你的視圖控制器和子類UIView不是唯一的選擇。您可以創建一個類來管理組成標題的視圖組。它在概念上將是一個視圖控制器,但您不會繼承UIViewController,只是繼承自NSObject。

+0

謝謝。我認爲這似乎是這種情況,雖然很難在SO上找到它,但它似乎都指向「自定義繪圖或自定義觸摸處理」作爲子類UIView的唯一原因,即使在線上有這麼多示例用它來整合觀點。 – Louis 2011-12-25 07:21:57

1

我個人認爲,我會將UILabels作爲UIView的屬性,所以選項2.然後,您可以通過控制器輕鬆地從視圖訪問它們。

這也給你從視圖到任何控制器的可重用性的優勢,因爲dealloc將擺脫那些來自UIView,你只擔心清理一次!

相關問題