Question

J'ai tâches contenant DB SQLite. Chaque tâche a une date, et il peut y avoir plusieurs tâches par jour.

Mon application charge les données pour un mois seulement dans un dictionnaire mutable. La clé de chaque élément de dictionnaire est une chaîne du jour du mois (1, 2, 3 ... 31). La valeur correspondante est un ensemble de tâches pour cette date. Ainsi, pour chaque jour du mois, il y a un tableau de 0 ou plusieurs tâches.

Le dictionnaire mutable est déclaré dans le viewcontroller racine. Le viewcontroller racine dans Interface Builder est la source de données et délégué de la vue du tableau. D'une certaine façon l'application sait que le viewcontroller racine obtient ses données du dictionnaire mutable. Je ne le précise pas, alors je me demande ce qui se passerait s'il y avait plus d'un dictionnaire, ou peut-être un dictionnaire et un tableau mutable? Néanmoins, cela fonctionne sans câblage supplémentaire. Lorsque le viewcontroller racine charge les données dans la table, chaque en-tête de section contient la date de son texte, et répertorie toutes les tâches dans des cellules individuelles en dessous. Certains en-têtes ont pas de cellules.

Maintenant, pour modifier une tâche, j'ai un viewcontroller « d'entrée ». La sélection d'une tâche dans le tableau provoque l'viewcontroller d'entrée pour charger cette information de tâche dans les champs de texte, où je peux changer le titre, la date, les détails, ou marquer comme fait. Après l'édition, l'entrée viewcontroller décharge, la racine (tableau) viewController rechargements, tableView de la vue appelle reloadData et les changements sont apparents.

Voici le problème: si j'ajouter une nouvelle tâche en cliquant sur le bouton + sur le contrôleur de navigation, il me prend à la même viewcontroller d'entrée, où je mets les données. Je reviens à la viewcontroller racine par les mêmes méthodes que lors de la modification des données existantes. Pourtant, aucune nouvelle cellule a été créée pour les nouvelles données! Si je ferme et rouvre l'application, les nouvelles données affiche correctement.

Depuis les mises à jour de données et inserts sont écrits dans le DB à partir des tableaux du dictionnaire lorsque l'application se ferme, cela signifie que le nouvel élément a été ajouté à vraiment l'un des tableaux.

Résumé: modifier élément de tableau existant et les nouvelles données sont affichées lorsque la table ses données recharge. Ajouter un élément de tableau, et il est ignoré lorsque la table rechargements.

Qu'est-ce qui ne va pas?

Était-ce utile?

La solution

Vous pouvez ajouter une ligne comme celui-ci dans votre UITableViewController:

[self.tableView reloadData];

Cela entraînera l'ensemble UITableView à recharger. Cependant, je crois que la méthode préférée est:

[self.tableView insertRowsAtIndexPaths: indexPaths withRowAnimation: YES];

Pour que cela fonctionne, vous devez savoir où la ligne (s) apparaît (le tableau de NSIndexPaths).

Il peut être plus facile de mettre à jour le UITableViewController à partir de la « entrée » ViewController.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top