2009-07-09 5 views
3

J'essaie de créer un UITableViewCell qui remplace le dessin complet du contenu. J'ai remplacé drawRect, qui est appelé, mais il dessine toujours le contenu par défaut. Comment puis-je arrêter de dessiner le contenu par défaut et comment le remplacer par mon propre rendu?Personnaliser dessiner un 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 
} 

Répondre

9

Loren Brichter (auteur de Tweetie) ont parlé de cela dans l'un des cours magistraux de programmation iPhone Stanford iTunes U. Il a dit qu'il avait obtenu d'excellents résultats de défilement en sous-classant UITableViewCell et en dessinant directement le contenu de chaque cellule et qu'il donnait un exemple de code au his blog post on the subject.

Il note également que Apple a ajouté a similar example dans un de leurs exemples de code.

+0

Ceci est également toujours couvert une tonne à la WWDC, si vous pouvez obtenir les vidéos de la session. –

+4

Je ne vois pas comment cette réponse répond à la question: «J'ai remplacé drawRect, qui est appelé, mais il dessine toujours le contenu par défaut. – tyler

1

Essayez de créer une sous-classe de UIView (avec votre propre drawRect) et lui attribuer à contentView de la cellule du tableau à la place.

0

Avez-vous envisagé d'utiliser Interface Builder pour créer votre UITableViewCell personnalisé?

Créez votre xib puis charger comme ceci:

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; 

Notez que la cellule réelle est à l'index 0 dans la xib.

... Vive

3

Le blog de Loren Brichter n'est plus disponible. Cependant, le code a été déplacé ici:

https://github.com/enormego/ABTableViewCell

Dans l'espoir que c'est une URL plus permanente.

+0

Il existe un instantané de l'entrée Blog dans l'archive web: http://web.archive.org/web/20081215081040/http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie -with-uitableview / – Olaf