2009-09-14 3 views
0

Si je réorganiser les lignes sur ma vue de table, est-il possible d'enregistrer le résultat uniquement si l'utilisateur a appuyé sur le bouton "Terminé"? (Réorganiser travaille très bien, mais je veux seulement engager le résultat final des positions si l'utilisateur appuie sur le bouton Terminé, et non chaque fois qu'une ligne est déplacée.)Comment enregistrer les rangées réordonnées uniquement en appuyant sur le bouton Terminé?

Y at-il quelque chose comme editingStyle == UITableViewCellEditingCellMove en commitEditingStyle?

Ou est-ce seulement possible dans l'action moveRowAtIndexPath?

Merci pour votre aide!

Répondre

1

Vous aurez besoin de créer une version "d'édition" de votre structure de données interne que vous validez lorsque l'utilisateur a terminé la modification. UITableView ne garde pas la trace de l'emplacement des cellules; ça dépend de toi pour faire ça. Il vous indique juste quand l'utilisateur demande de déplacer des choses. Si vous ne voulez pas vraiment les déplacer à ce moment-là, vous devrez garder une trace de l'endroit où ils se trouvent par rapport à l'ordre actuel dans TableView.

Rappelez-vous, UITableViews sont intentionnellement muets. Ils ne gardent aucune trace des données. Ils dessinent juste des choses. Vous gardez la trace des données (comme la source de données), et dites-leur ce qu'il faut dessiner quand ils demandent.

Je recommande généralement que les développeurs séparent leurs données réelles dans une classe de modèle distincte, et que le UITableView conserve un NSMutableArray distinct basé sur cette classe de modèle. Dans ce cas, lors de la modification, vous mettriez à jour le tableau de UITableView et, une fois l'édition terminée, il enverrait ce tableau au modèle pour mettre à jour les données "réelles".

+0

Salut, merci pour votre réponse. Je tiens mes données dans un tableau. Ma question est plus sur où économiser si le recours est fait. Pour le moment, je parcours ma matrice de données sur moveRowAtIndexPath et stocke les positions dans ma base de données. Mais cette boucle est appelée chaque fois que je l'utilise. Donc, je pense que c'est mieux pour la performance si l'action de sauvegarde se produit dans l'action commitEditingStyle comme Delete. – phx

+1

Faites simplement votre base de données enregistrer dans setEditing: animated :. –

Questions connexes