2009-07-09 139 views
3

我想創建一個覆蓋內容的完整繪圖的UITableViewCell。我重寫了正在調用的drawRect,但它仍然繪製默認內容。自定義繪製UITableViewCell

如何讓它停止繪製默認內容,以及如何將其替換爲我自己的渲染?

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 

    DLog (@"Overloaded TableCell initWithStyle"); 
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { 

    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    DLog (@"TableCell::drawRect"); 

    // expecting it to draw nothing 
} 

回答

9

羅蘭Brichter(特威特的作者)在iTunes U專區斯坦福iPhone編程課程的一次演講中談到了這一點。他說,他通過繼承UITableViewCell並直接繪製每個單元格的內容,並且在his blog post on the subject中給出了一個代碼示例,從而獲得了出色的滾動性能結果。

他還指出,蘋果在其代碼示例中添加了a similar example

+0

如果您可以獲得會議視頻,這一點在WWDC上也是非常重要的。 – 2010-06-21 10:25:53

+4

我不明白這個回答的答案是這樣的問題:'我已經重寫了正在調用的drawRect,但它仍然繪製默認內容。' – tyler 2012-10-30 18:18:16

1

嘗試創建的UIView的一個子類(用自己的drawRect)並將其分配給表格單元格的contentView代替。

0

您是否考慮過使用Interface Builder來創建自定義的UITableViewCell?

創建您的廈門國際銀行,然後加載它像這樣:

static NSString *CellIdentifier = @"Cell"; 
cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil]; 
    cell = [nibContents objectAtIndex:0]; 
} 

// do your customization 
return cell; 

注意,電池實際是在廈門國際銀行指數0。

乾杯......