2009-09-04 8 views
0

J'ai un UITableView qui implémente NSFetchedResultsControllerDelegate. Quand je tape une cellule, je charge un autre viewcontroller qui me permet d'éditer une entité représentée par les tablecells. Quand j'ai fini d'éditer, il envoie un message à UITableViewController qui fait un [self.tableview reloadData];reloadData de UITableView n'utilise pas les cellules

Mon problème est que reloadData ne semble pas utiliser les données après l'avoir modifié. Comment puis-je faire cela. Comment puis-je le faire?

Répondre

1

Vous ne savez pas exactement ce que vous essayez de faire. Toutefois, si vous souhaitez que les cellules soient dans un ordre différent pour une vue de table, vous devez trier sa source de données, donc si vous le souhaitez dans l'ordre 1 2 3, elles seront dans cet ordre, mais ensuite si vous le souhaitez. les veux 2 1 3 alors vous devez utiliser votre source de données pour contenir 2 1 3 dans cet ordre, tout dépend de ce que vous retournez dans cellForRowAtIndexPath pour chaque chemin d'index, l'échantillon que j'ai donné suppose que vous utilisez le chemin d'index de ligne index dans un tableau qui est votre source de données .. espoir cela aide

+0

Pour continuer la pensée de Daniel ici, "reloadData" ne signifie pas que la tableview modifiera les données de toute façon. Cela signifie que la tableview vous demandera à nouveau * pour les données. C'est la responsabilité de la source de données (que vous écrivez) de maintenir les données. –

+0

J'ai transmis un tableau de NSSortDescriptors au NSFetchedResultsController. Lorsque j'appelle [self.tableView reloadData], il ne triera pas l'élément nouveau ou modifié. –

+0

vérifiez que la source de données a bien été modifiée ... – Daniel

0

Vous pouvez passer le NSSortDescriptor au NSFetchedResultsController, mais avez-vous réellement exécuté un fetch?

0

Vous devez enregistrer les modifications à l'aide de [NSManagedObjectContext -save:], puis votre NSFetchedResultsController enregistrera la modification et notifiera la mise à jour du tableau. Vous n'avez pas besoin d'appeler -reloadData car il sera géré pour vous.

Assurez-vous que votre UITableViewController est le délégué pour le NSFetchedResultsController afin qu'il puisse gérer la mise à jour.

Questions connexes