2010-07-30 53 views
9

將子視圖添加到自我和/或添加到內容視圖之間有什麼區別?正確地繼承UITableViewCell?

子視圖添加到自

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { 
    UIImage *img = [UIImage imageNamed:@」lol.jpg」]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self addSubview:imgView]; 
    [imgView release]; 
    return self; 
} 

子視圖添加到內容查看

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { 
    UIImage *img = [UIImage imageNamed:@」lol.jpg」]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self.contentView addSubview:imgView]; 
    [imgView release]; 
    return self; 
} 

回答

25

按照Apple docs

一個UITableViewCell對象的內容視圖是用於內容的默認上海華由單元顯示。如果您想通過簡單地添加附加視圖來自定義單元格,則應該將它們添加到內容視圖中,以便在單元格進入和退出編輯模式時適當定位它們。

通常你添加到內容查看時,你是舒服的調整大小和內容的定位由自動調整大小設置被處理,而當你需要一些自定義的行爲,這樣子類的UITableViewCell。 Apple桌面視圖編程指南在customizing UITableViewCells上有很大的章節。

0

您應該將自定義視圖插入單元格contentView。請確保您不使用

cell.textLabel?.text 
0

它,因爲當一個tableviewcell進入編輯模式會添加其他控制如刪除按鈕的單元格。所以你的內容應該調整大小,爲新控件騰出空間。如果你直接添加你的子視圖到tableviewcell,這些編輯控件會掩蓋你添加的子視圖。單元格在進入編輯模式時無法調整其大小(它必須保持表格視圖的寬度)。但contentView對象可以並且可以。這就是爲什麼你應該將你的子視圖添加到contentView對象。