2010-08-17 5 views
1

Mon application permet à l'utilisateur de réorganiser les lignes dans une vue de table, mais je veux reloadData après le déplacement est fait pour changer quelque chose (ajouter du texte à la première rangée).Comment savoir quand déplacer la ligne est terminée

J'ai essayé de reloadData en méthode moveRowAtIndexPath:, mais cela bloque l'application car cette méthode est appelée plusieurs fois (en fonction du nombre de lignes à déplacer) et la vue table est rechargée plusieurs fois. Donc, je veux juste savoir quand le comportement de déplacement est fait, je reloadData en une seule fois. Est-ce que quelqu'un sait à propos de cela? Aidez-moi, s'il vous plaît. Merci beaucoup!

Répondre

1
- (void)doReload 
{ 
    [myTable reloadData]; 
} 

Vous pouvez faire [self performSelector:selector(doReload) withObject:nil afterDelay:0.1] dans la méthode moveRowAtIndexPath mais vous ne pouvez pas appeler directement [myTable reloadData] parce que vous l'avez trouvé provoque une boucle. Fondamentalement, vous devez autoriser la manipulation de la table à finir et la boucle d'exécution à contourner pour appeler votre méthode, ce qui provoque alors un rechargement de votre table. C'est un peu un hack mais ça marche bien. À ce stade, vous n'avez habituellement pas besoin de reloadData, mais vous essayez peut-être de faire quelque chose hors de l'ordinaire.

+0

Bien que nous devions faire quelques trucs, mais cela fonctionne bien, merci –

0
-(int)table:(UITable*)table movedRow: (int)row toRow: (int)dest 
+0

Il semble que cette méthode de surcharge ait un sens, mais elle n'est pas exécutée. –

Questions connexes