1

在Objective-C中使用正確的MCV可以讓UIView子類擁有@propertys?應該UIViews有屬性?

即在.h文件

@class MyViewSubclass; 

@interface MyViewSubclass : UIView 
@property (strong, nonatomic) UILabel *labelLabel; 
@property (strong, nonatomic) UILabel *valueLabel; 
@end 

或本應在UIViewController子類來完成?

在此先感謝。

回答

5

子類UIViewController管理視圖層次結構中的標籤,字段,圖像和其他視圖是最常見的。但是,如果您要創建將在整個應用程序中使用的可重用組件視圖,那麼繼承UIView並向您的子類添加屬性是非常合適的。

從蘋果公司的iOS應用程序編程指南:

視圖控制器對象管理你的應用程序的屏幕上內容的提示。視圖控制器管理單個視圖及其子視圖的集合。呈現時,視圖控制器通過將它們安裝在應用程序的窗口中來使其視圖可見。

UIViewController類是所有視圖控制器對象的基類。它提供了加載視圖,呈現視圖,響應設備旋轉旋轉它們以及其他幾種標準系統行爲的默認功能。 UIKit和其他框架定義了額外的視圖控制器類來實現標準系統接口,如圖像選擇器,標籤欄界面和導航界面。

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AppArchitecture/AppArchitecture.html#//apple_ref/doc/uid/TP40007072-CH3-SW1

1

UIView子類具有屬性是完全合理的。例如,您可能需要它們來實現layoutSubviews

3

視圖具有屬性很好,但不要將模型邏輯混合到視圖中。視圖中的屬性應描述屬性的外觀,而不是屬性的屬性。我會避免在視圖中有一個名爲valueLabel的屬性。

視圖屬性名稱的示例是UITableViewCell。它具有屬性imageView,textLabel和detailTextLabel。

1

這是完全合理的,如果你還想要創建一個可重用的組件,讓互動和更好的靈活性,看看UIControl(是的UIView的子類)