2010-08-08 5 views
1

J'ai une application qui si elle est fermée dans une certaine vue, je veux restaurer cette vue exactement où l'utilisateur est parti.Comment recréer une pile UIViewController lorsque le contrôleur de vue racine est un UITabBarController?

Mon applicationDidFinishLaunching est très simple au moment:

- (void)applicationDidFinishLaunching:(UIApplication *)application { 

    // Override point for customization after app launch  
    [window addSubview:tabBarController.view]; 
[window makeKeyAndVisible]; 

} 

Que puis-je faire pour restaurer une séquence de 3 contrôleurs de vue qui doivent être empilés dans le contrôleur de barre d'onglets?

Normalement, l'utilisateur ne ces interactions avec l'application pour aller dans la vue que je veux restaurer:

  1. App ressorte;
  2. Le premier onglet est une vue de table (c'est donc le premier contrôleur de vue que je dois restaurer) et l'utilisateur sélectionne une ligne;
  3. La vue qui apparaît est une autre vue de la table (c'est donc le second contrôleur de vue que je dois restaurer) et l'utilisateur appuie sur a + dans la barre supérieure de cette vue;
  4. Le dernier contrôleur de vue apparaît de manière modale (c'est donc le troisième contrôleur de vue que je dois restaurer).

J'ai essayé ce que la réponse de cette post suggère, mais mon contrôleur de barre d'onglets se dans un mess (le poste ne pas utiliser un contrôleur de barre d'onglets et je suis un débutant dans le développement iPhone, donc mes essais n'était pas très réussi).

Merci d'avance.

Répondre

1

Il ne semble pas que vous décriviez des modèles d'utilisation typiques de UITabBarController, où vous avez une série d'onglets qui sont toujours disponibles et offrent différents modes d'utilisation pour l'application. Habituellement, recréer l'état d'un contrôleur de barre d'onglets consiste simplement à instancier les onglets comme d'habitude et à sélectionner l'onglet actuel.

Une séquence d'écrans fournissant des niveaux de détail croissants est le modèle d'utilisation normal de UINavigationController.

Vous voudrez peut-être déterminer si vous avez une conception saine avant de vous inquiéter de la façon de le restaurer. Cela dit, vous pouvez recréer toute votre structure dans applicationDidFinishLaunching, ou vous pouvez donner à chaque classe la logique de recréer les contrôleurs de vue et les vues en aval. Je prendrais la dernière approche.

+0

Merci, Seamus. La dernière approche que vous avez mentionnée est vraiment meilleure en raison de la séparation des préoccupations. Je vais essayer. Dans mon application, juste la première barre d'onglets qui a une vue de table qui va à une autre vue de table quand l'utilisateur sélectionne une rangée dans le premier (une relation entre les activités et ses exécutions). Les autres barres d'onglets ont aussi d'autres fonctionnalités. Merci beaucoup pour votre suggestion. – reinaldoluckman

+0

Ouais! Travaillé comme un charme. Dans viewDidLoad de chaque classe, je recherche des données dans un fichier plist et recréer la pile avec [controller1 presentModalViewController: controler2 animated: NO]. Merci beaucoup. – reinaldoluckman

Questions connexes