UITableViewController pas redessiner une nouvelle étiquette de texte cellulaire après popViewControllerAnimated

StackOverflow https://stackoverflow.com/questions/2189520

Question

J'ai un problemetic UITableViewController ne parvient pas à redessiner une cellule mis à jour après une vue de l'enfant est enlevé.

Voici ce qui se passe. Après avoir changé les données en vue de l'enfant, le contrôleur de vue parent relise les tableau de données source et fonctionne [tableView reloadData] via un PostNotification. Après cela déclenche, j'utilise popViewControllerAnimated pour revenir au parent UITableViewController (ce qui apparaît l'enfant voir la pile, et révèle le contrôleur d'un niveau).

Cependant, mes données mises à jour ne figure pas dans le contrôleur de vue parent! Selon le débogueur, l'étiquette de la cellule a été mise à jour, mais l'étiquette visible ne change pas. Cependant, si je défilement flick la table, se déplaçant momentanément la cellule mise à jour hors de la vue, quand il réapparaît l'étiquette est mis à jour!

J'essaie aussi d'appeler [tableView reloadData] via viewWillAppear , mais le problème persiste.

Voici quelques informations supplémentaires qui peuvent être utiles. J'ai 3 vues structurées comme ceci:

1/  SettingsViewController : UITableViewController
2/  -- UserView : UITableViewController
3/  ---- UserDetailsView : UIViewController <UIActionSheetDelegate>

Je fais appel UserDetailsView à l'intérieur UserView comme suit:

 UserDetailsView *userDetailsView = [[UserDetailsView alloc] init];
 [self.navigationController pushViewController:userDetailsView animated:YES];

Si je reviens au sommet le plus contrôleur (SettingsViewController), puis charger le contrôleur problématique (UserView), tout est dessiné correctement. Il est seulement lors du retour d'une vue de l'enfant que ce problème se produit.

Merci d'avance pour vos suggestions.

Était-ce utile?

La solution

Enfin travaillé celui-ci après environ une heure de codage par paires.

Après un certain temps, nous avons remarqué que chaque fois que nous avons envoyé le message reloadData tableView a toujours été nulle . Comme vous le savez peut-être en Objective C, les objets nuls acceptent tout message sans se plaindre.

Il se trouve que « quelqu'un » (ahem, désolé il me était) avait défini cette ligne dans le fichier d'en-tête.

 UITableView *tableView;

Maintenant, vous les cookies intelligents là-bas Sachez que parce que nous étendons UITaleViewController, nous ne avons pas besoin de faire un pointeur vers nous tableView . En effet, j'avait remplacé le membre tableView hérité d'un objet nul.

Mystère résolu. Espérons que cela aide quelqu'un d'autre là-bas aussi! : D

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