2010-05-21 10 views
0

Je suis nouveau à la programmation iPhone et travaille sur ma première vraie application (ie pas écrit dans un livre ou en ligne) et j'ai rencontré un petit problème que je pourrais résoudre une multitude de façons, mais je sens qu'il devrait y avoir une bonne solution que peut-être je manque juste.Quelle est la bonne façon d'aligner UITableViewCells lorsque seulement certains ont un imageView?

Voici le scénario: J'ai un UITableView avec un tas de standard UITableViewCell s dedans. Ce que je veux faire est de cocher une coche verte lorsque la cellule est sélectionnée et que cette partie fonctionne (note: J'utilise déjà le accessoryType pour autre chose, donc je ne peux pas l'utiliser pour la coche. .besides, ce n'est pas aussi joli). Malheureusement, quand je bascule la coche comme ceci:

if (...) { 
    cell.imageView.image = [UIImage imageNamed:@"checkmark.png"]; 
} else { 
    cell.imageView.image = nil; 
} 

Il fait en arrière et en avant le rebond de l'étiquette de la cellule selon qu'elle est cochée ou non. Quelle est la bonne façon d'aligner le texte de la cellule (défini par cell.textLabel.text), qu'il y ait ou non un jeu d'images? Les solutions que je suis venu avec sont:

  1. Créer une image png 40x40 blanc dans Photoshop et définir le décochée à cette
  2. Créer une image 40x40 vierge uniquement dans le code
  3. Définir quelques réglages que je n » sais à ce sujet alignera pour moi
  4. Créer une sous-classe de UITableCellView qui fait ce que j'ai besoin (ce qui serait stupide, je vais juste avec l'option 1 ...)

Suggestions? Pensées? Commentaires? Merci beaucoup :-)

P.S. Je voudrais que la solution fonctionne avec OS 3.0 et 4.0 si cela fait toute sorte de différence.

Répondre

1

L'option 1 est la voie à suivre pour une cellule standard. À strictement parler, vous n'avez pas besoin de sous-classer UITableViewCell pour personnaliser la mise en page. Vous pouvez ajouter les vues que vous souhaitez au contenu. Vous pouvez donc ajouter un UILabel et UIImageView au contentView au lieu d'utiliser les propriétés imageView et textLabel.

+1

+1 Voici une question pertinente http://stackoverflow.com/questions/1171476 – Shaji

+0

Merci pour la réponse. @Shaji - Merci pour le commentaire, cette question peut aider à l'avenir. –