2009-07-09 3 views
3

Я пытаюсь создать UITableViewCell, который переопределяет полный чертеж содержимого. У меня есть переопределенный drawRect, который вызывается, но он по-прежнему рисует содержимое по умолчанию.Custom draw a 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

Loren Brichter (автор Tweetie) говорил об этом в одном из курсов по программированию лекции ITunes U Stanford iPhone. Он сказал, что получил отличные результаты прокрутки, подклассифицируя UITableViewCell и напрямую рисуя содержимое каждой ячейки, и он приводит пример кода в his blog post on the subject.

Он также отмечает, что яблоко добавило a similar example в одном из своих примеров кода.

+0

Это также всегда покрывает тонну на WWDC, если вы можете получить видео сеанса. –

+4

Я не вижу, как этот ответ отвечает на вопрос: «У меня есть переопределенный drawRect, который вызывается, но он по-прежнему рисует содержимое по умолчанию». – tyler

1

Попробуйте создать подкласс UIView (с вашим собственным drawRect) и назначить его в таблице ячейки contentView вместо этого.

0

Считаете ли вы, что с помощью Interface Builder создается пользовательский UITableViewCell?

Создайте свой XIB, а затем загрузить его, как это:

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 в XIb.

Приветствия ...

3

Блог Loren Brichter больше не доступен. Тем не менее, код был перенесен сюда:

https://github.com/enormego/ABTableViewCell

В надежде, что это более постоянный URL.

+0

В блоге есть моментальный снимок записи в блоге. Http://web.archive.org/web/20081215081040/http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie -с-UITableView / – Olaf