2010-11-11 4 views
0

Je dois afficher une vue de navigation où le nombre de vues dépend du serveur. Je ne peux donc pas coder en dur les contrôleurs de vue. Est-il possible que je peux utiliser 1 contrôleur de vue et les données seront envoyées par le serveur. Donc, essentiellement, cela fonctionnera comme ceci: 1. Obtenir des données du serveur ... afficher sur la vue nav en utilisant le contrôleur de navigation. 2. Une fois que je tape sur une entité ... Je reçois un autre ensemble de données du serveur ... en utilisant le même contrôleur que sur l'écran ... ans etc ... comme je ne suis pas sûr jusqu'à quel niveau nous peut forer vers le bas. 3. Une fois que l'utilisateur a tapé sur le bouton de retour ... Je vais utiliser les données mises en cache localement pour présenter dans la même vue ...Contrôleur de navigation - Données pilotées par le serveur

Ne voyez aucun problème ici. Je me demande si je peux pousser le même objet de classe de contrôleur plusieurs fois dans la pile.

S'il vous plaît guider.

Répondre

0

Tant qu'ils sont différents objets, il fonctionnera bien.

YourNavViewController *firstNavViewController = [[YourNavViewController alloc] initWithNibName:@"YourViewXib" bundle:nil]; 
[self.navigationController pushViewController:firstNavViewController animated:YES]; 
[firstNavViewController release]; 

puis plus tard sur celle-là:

YourNavViewController *secondNavViewController = [[YourNavViewController alloc] initWithNibName:@"YourViewXib" bundle:nil]; 
[self.navigationController pushViewController:secondNavViewController animated:YES]; 
[secondNavViewController release]; 

etc.

0

Pas de problème du tout. Vous pouvez pousser dynamiquement UIViewControllers dans votre tableau viewController UINavigationControllers. Vous devriez, comme vous l'avez mentionné, implémenter un mécanisme de mise en cache du contenu sur l'appareil, afin de ne pas avoir à tout recharger tout le temps. Une approche consiste à utiliser une structure xml que vous chargez à partir du serveur uniquement si elle diffère de celle que vous avez stockée localement sur le périphérique (comparez par exemple via les hachages, les numéros de version des horodatages de mise à jour).

0

Vous ne pouvez pas pousser le même objet sur la pile à plusieurs reprises, mais il semble que vous voulez instancier la même classe plusieurs fois, et pousser chacun ces objets. Par conséquent, si les données collectées étaient XML (par exemple) et que vous disposiez d'une hiérarchie d'objets analysés à partir d'une classe NSXMLParser, pour chaque niveau de la hiérarchie, vous pouvez créer un nouvel objet de vue contenant les données à ce niveau, et pousser ça.

Questions connexes