2010-09-14 5 views
0

Je suis assez nouveau dans la programmation iPhone/ObjC, même si j'ai plusieurs années d'expérience dans le codage, en particulier le développement DB.Débutant: comment actualiser les cellules TabView/déclencher viewWillAppear dans TabView?

Le projet que j'ai choisi comme mon début est une petite application destinée à soutenir un jeu de société, où l'on est tenu de prendre des notes sur le statut des pièces. En bref, je veux remplacer le stylo et le papier avec cette application. Jusqu'à présent, j'ai configuré la fenêtre principale avec un TabBar (4 onglets, à cause de 4 lecteurs), chacun étant connecté à un ViewController ("FirstViewC", "SeconcViewC", etc.) qui établit à nouveau un NavController. Le NavController a ensuite un TableViewController comme première sous-vue, et quand un élément de table est sélectionné, un DetailViewController est ajouté en tant que sous-vue au NavController (dans didSelectRowAtIndexPath).

À ce stade, j'ai un objet ("PlayingPiece") avec quelques propriétés, qui peuvent être modifiées dans le détail.

Maintenant (finalement) voici mon problème.

En revenant de la vue détaillée (par le bouton "Retour" du système d'exploitation fourni dans le NavBar), le détail est retiré de la pile subview (automatiquement), et le TableView est à nouveau visible. Mais pour une raison quelconque, les changements dans les valeurs PlayingPiece ne sont pas reflétés. Quand je fais défiler la cellule en question hors de l'affichage, puis la ramène, puisqu'il y a une nouvelle configuration de cellule invoquée, tout se présente comme souhaité.

Évidemment, j'ai besoin de déclencher une sorte de «rafraîchissement» de mes cellules de tableau affichées (ou tous, nous parlons de 10 éléments de table max, donc pas de problèmes de performance ici). Je voudrais appeler sth comme [self.tableView reloadData], mais ni "viewWillAppear" ni "viewDidAppear" ne sont appelés dans TableViewController. Je ne sais pas s'il y a un problème avec ma «hiérarchie de contrôleurs» ou si je manque une sorte de délégué que j'ai oublié de régler. Je promets, j'ai scanné plusieurs discussions dans les forums avant, mais je n'ai trouvé aucune discussion pour m'aider à résoudre ce problème.

S'il y a quelqu'un avec une suggestion à ce sujet, toute aide est grandement appréciée - elle me rend fou ;-) J'utilise le dernier SDK.

Marcus

Répondre

0

J'ai finalement pensé (avec un peu d'aide externe) que la structure de mon contrôleur était quelque peu perturbée. Après avoir jeté une "couche", viewWillAppear a fonctionné comme prévu.

Merci pour vos suggestions de toute façon - j'ai beaucoup apprécié votre soutien!

Marcus

0

Si vous utilisez UINavigationController pour pousser et pop les contrôleurs de vue, vous pouvez jeter un oeil à (UINavigationControllerDelegate):

- NavigationController: willShowViewController: animation:

- navigationController: didShowViewController: animé:

+0

Salut Nevin, merci pour votre réponse.Vous voulez dire sth le long de ces lignes: - (void) navigationController: (UINavigationController *) navigationController willShowViewController: (UIViewController *) viewController animé: (BOOL) animé - désolé, vérifié avec NSLog, il n'est pas appelé ... – MacStrass

+0

Vous aurez besoin affecter un délégué pour le contrôleur de navigation en premier :-) – Nevin

Questions connexes