2009-07-09 14 views
3

コンテンツの完全な描画をオーバーライドするUITableViewCellを作成しようとしています。私は呼び出されているdrawRectをオーバーライドしましたが、それでもデフォルトの内容が描画されます。カスタム描画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

ローレンBrichter(ツイーティの作者は)のiTunes UスタンフォードiPhoneプログラミングコースの講義の一つでこれについて話しました。彼は、UITableViewCellをサブクラス化し、各セルの内容を直接描画することでパフォーマンスが大幅に向上し、his blog post on the subjectにコード例を示しています。

彼はまた、Appleがコード例の1つにa similar exampleを追加したことにも注意します。

+0

セッションビデオを入手できる場合は、これもWWDCで常にカバーされます。 –

+4

このレスポンスの答えが「私はオーバーライドされましたdrawRectが呼び出されていますが、依然としてデフォルトの内容を描画しています」という質問は表示されません。 – tyler

1

は(自分のdrawRectで)のUIViewのサブクラスを作成してみてください、代わりにテーブルセルのcontentViewに割り当てます。

0

カスタムUITableViewCellを作成するためにInterface Builderを使用したことはありますか?

はあなたのXIBを作成し、このようにそれを読み込む:実際のセルはXIBで、インデックス0であることを

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; 

注意。

乾杯...

3

Loren Brichterのブログはもはや利用できません。しかし、コードはここに移動されました:それは、より恒久的なURLのご希望に

https://github.com/enormego/ABTableViewCell

を。

+0

web.archiveにブログエントリのスナップショットがあります:http://web.archive.org/web/20081215081040/http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie -with-utableableview / – Olaf

関連する問題