2010-04-05 6 views
1

Afin de fournir l'interface utilisateur pour que l'utilisateur ajoute de nouveaux éléments à ma vue de table, je voudrais ajouter une nouvelle rangée dans ma table à un emplacement spécifié (dernière rangée par exemple) quand la vue est en mode édition (j'ai un bouton Modifier sur la barre de navigation de la vue à droite). Cette nouvelle rangée aura un indicateur de bouton d'ajout sur le côté gauche et une flèche d'accessoire de divulgation sur la droite. Lorsque la vue n'est pas en mode édition, cette ligne d'ajout ne doit pas être affichée.Ajouter une ligne à UITableView pour ajouter un nouvel élément?

Je ne sais pas si je dois remplacer:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{...} 

où j'appelle la méthode de UITableView:

insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation: 
(UITableViewRowAnimation)animation 

pour insérer une nouvelle ligne?

Ma compréhension est que cet appel peut ajouter une nouvelle rangée dans la vue de table. La source de données de la vue de table provient du stockage CoreData. Vous n'êtes pas sûr que cela peut provoquer des nombres incohérents de données dans le magasin de données et la vue de table? Si tout est OK et que je dois gérer les lignes dans la vue de tableau, comment puis-je ajouter l'indicateur d'ajout de gauche et la flèche de divulgation de gauche à la nouvelle ligne?

Une autre question est que si je peux le faire pour insérer une nouvelle ligne en tant que ligne Ajouter, devrais-je le supprimer lorsque la vue de la table n'est pas en mode édition?

Je veux juste savoir si je suis sur la bonne voie.

Répondre

1

– insertRowsAtIndexPaths:withRowAnimation: ajoutera une ligne au TableView. Cette ligne restera dans TableView jusqu'à ce qu'elle soit supprimée ou que les données soient rechargées. Si vous mode d'édition sortie, l'apparition de cette ligne sera envoyée à l'objet DataSource avec cette méthode:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

Lorsque le mode d'édition est sorti, l'objet DataSource sera déclenché pour vous donner l'occasion de faire avancer les choses dans un état consistant. Le fait de surcharger setEditing et d'insérer et de supprimer la ligne avant le super appel est probablement plus facile que de travailler sur l'interface de la méthode commitEditingStyle DataSource - c'est un peu étrange.

Questions connexes