2009-07-23 11 views
1

Remarque: J'utilise iPhone SDK 3.0 Final Version pour Leopard.Développement iPhone - UITableViewCellStyleValue2

Je dois préparer une liste de tables similaire à celle utilisée par l'application Album photo de l'iPhone. Il y a deux nouveaux styles pour UITableViewCell:

  1. UITableViewCellStyleValue1
  2. UITableViewCellStyleValue2

Je pensais que je peux les utiliser au lieu de créer une classe de cellules personnalisée, mais regarde comme ils ne fonctionnent pas correctement. Je suis confronté aux problèmes suivants avec UITableViewCellStyleValue2:

  1. Je n'arrive pas à afficher une image.
  2. Si je change la taille de la police de textLabel et detailTextLabel, les valeurs ne sont pas alignées.

est ici l'exemple de code:

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Configure the cell. 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    cell.imageView.image = [UIImage imageNamed:@"Pointy.gif"]; 

    cell.textLabel.text = @"Label"; 
    cell.textLabel.textColor = [UIColor redColor]; 
    cell.textLabel.font = [UIFont systemFontOfSize:21]; 

    cell.detailTextLabel.text = @"(10)"; 
    cell.detailTextLabel.textColor = [UIColor grayColor]; 
    cell.detailTextLabel.font = [UIFont systemFontOfSize:17]; 

    return cell; 
} 

Ce travail de code avec UITableViewCellStyleDefault et UITableViewCellStyleSubtitle pour afficher des images. Est-ce que UITableViewCellStyleValue2 prend en charge la propriété d'image de cellule? Je vois un espace vide à la place de la zone d'image (coin gauche de la cellule). Est-ce que je fais quelque chose de mal ici?

Si cela ne fonctionne pas, comment puis-je créer une classe de cellule personnalisée avec un style similaire au style UITableViewCellStyleValue2. Je suis particulièrement intéressé à obtenir le detailTextLabel aligné à gauche avec textLabel.

En remerciant par anticipation.

Répondre

2

Les nouveaux styles intégrés présentent des ensembles de champs dont les configurations sont identiques à celles d'un certain nombre de configurations système (comme les cellules du carnet d'adresses).

Quant à votre spécifique exacte:

  1. UITableViewCellStyleValue2 n'a pas une image
  2. La logique de mise en page des styles builtin assumer les mesures de police sont ce qu'ils sont mis à. Si vous les modifiez, les champs ne seront pas alignés

Vous pouvez obtenir une description détaillée de ce qui est disponible pour chacun des styles intégrés dans le documentation. Si aucune de ces options ne vous convient, vous devez sous-classer UITableViewCell, ajouter vos propres sous-vues et les mettre en page dans layoutSubviews. Apple a un grand nombre d'exemples de la façon dont le TableViewSuite.

+0

Merci pour votre réponse. Je suis familier avec TableViewSuit et j'ai travaillé avec TableViewCell personnalisé. Les résultats que je cherche à atteindre sont comme UITableViewCellStyleValue2, avec image. Les exemples de TableViewSuite n'abordent aucune situation avec le détail Label est aligné "left" avec l'étiquette principale. par exemple. Application d'album photo, où le nombre d'images dans un album est écrit juste à côté du nom de cet album ... "Photos enregistrées (102)" où "(102)" est gris. – Mustafa

+1

Je ne comprends pas quel est le problème.Si vous implémentez une sous-vue personnalisée, vous pouvez placer toutes les sous-vues souhaitées où vous le souhaitez. Ajoutez un ivar et une propriété pour quelque chose nommé "leftAlignedImage" ou similaire et définissez son cadre à 0,0, cellheight, cellhieight) dans layoutSubviews. –

+0

@Louis: placer l'image et le texte, et le texte de détail dans un endroit défini n'est pas un problème, les placer à une position calculée pour chaque cellule est le problème. Les résultats que je recherche sont comme dans l'application Album photo. J'ai posté une solution possible avec un problème:) – Mustafa

Questions connexes