2010-09-22 2 views
0

Je travaille sur une application iPhone. Il s'agit d'une application de barre d'onglets contenant un contrôleur de vue de navigation dans un onglet particulier. J'ai une vue de table dans le contrôleur de vue de navigation. Dans cette table de groupe, j'ai besoin d'ajouter un UISwitch à certains éléments particuliers. par exemple, je les sections suivantes:iPhone dev: UITableView L'appreance de la cellule modifiée lors du défilement

  • Comptes
    • twitter (&)
    • facebook (&)
    • linkedin
  • publication
    • twitter (*)
    • facebook (*)
    • linkedIn (*)
  • connexion
    • rester connecté (*)
  • environ
    • environ

Je dois avoir l'UISwitch pour ceux avec le * mais pas pour les autres. Je parviens à ajouter l'UISwitch pour ceux qui utilisent la condition sur indexPath dans les méthodes tableView: cellForRowAtIndexPath. MAIS ... lorsque je fais défiler la vue ... les commutateurs UIS sont ajoutés à d'autres éléments (celui avec le & ci-dessus).

Pourriez-vous m'aider s'il vous plaît?

Merci beaucoup,

Luc

Répondre

1

Il est presque certainement un problème avec votre code pour la réutilisation des cellules.

Lorsque vous déposez une cellule pour la réutiliser, elle n'est pas réinitialisée à l'état initial, mais elle dispose encore d'un UISwitch si un commutateur UISwitch y a été ajouté auparavant. Donc, chaque fois que vous déposez une cellule pour la réutiliser, vous devez supposer qu'elle peut avoir une sous-vue UISwitch, et supprimer cette sous-vue si vous ne le voulez pas avant de retourner la cellule.

+0

ok, je comprends. Donc, fondamentalement, une [cellule removeSubview] devrait faire l'affaire? J'ai aussi lu à propos de faire notre propre classe UITableViewCell, ce qui serait le meilleur? – Luc

+0

@ Première question de Luc: Oui. Vous pouvez soit a) supprimer la sous-vue, peu importe quoi, puis l'ajouter à nouveau si vous le voulez (lent mais facile à coder), ou b) vérifier si elle est là et l'enlever si vous ne le voulez pas. – AlcubierreDrive

+0

@ 2ème question de Luc: Sous-classer UITableViewCell est une bonne idée.Il permet une conception OO correcte en vous permettant de placer le code qui détermine l'apparence de la cellule dans la classe de la cellule (plutôt que dans UITableViewController). – AlcubierreDrive

Questions connexes