2009-09-06 7 views
1

pourrait quelqu'un m'aider avec la question suivante. Je travaille sur une application avec la navigation similaire à l'application Notes a. Le problème auquel je faisais face consistait à implémenter la navigation dans un niveau et à conserver la vue racine comme l'écran précédent. Donc, le scénario que je dois réaliser: 1. Descendre de la liste de haut niveau à la vue détaillée. 2. Dans cette vue détaillée, accédez à la vue détaillée de l'élément suivant/précédent. 3. Le bouton Précédent devrait mener à la vue racine.UINavigationController et la commutation prochain-prev élément dans un niveau

J'ai essayé plusieurs approches et personne n'a bien fonctionné pour moi. La solution la plus juste de mon point de vue est de créer un contrôleur intermédiaire entre la racine et les contrôleurs détaillés pour gérer ces redirections next/prev. Mais le principal problème ici est que le passage d'une vue détaillée à une autre le volet de navigation reste le même, donc il n'est pas impliqué dans l'animation, si l'application Notes fonctionne bien dans ce cas.

Pourriez-vous me montrer comment il est préférable d'organiser l'interaction des contrôleurs dans ce cas?

Merci d'avance. Désolé pour un poste assez important, essayait d'être aussi informatif que possible.

Meilleures salutations, Roman

Répondre

1

Je pense que la meilleure mise en œuvre est ainsi:

Supposons que vous avez une classe Note où les données sont stockées.

Vous pouvez avoir deux contrôleurs de vue, l'un avec la liste de notes et l'autre avec les détails. Ces deux éléments peuvent être ajoutés à un contrôleur de navigation. Ensuite, lorsque vous voulez passer à la note suivante, vous récupérez cet objet en quelque sorte et l'attribuez à votre contrôleur de détail avec un -setNote: appel. Cette méthode sera responsable de changer ce que les points de vente affichent.

+0

Merci pour la réponse! J'ai considéré de cette façon, mais je ne suis pas sûr qu'il soit possible d'ajouter une animation pour simuler la navigation vers une autre vue? – user169259

+0

Voulez-vous dire animer la transition lorsque vous appuyez sur le bouton suivant/précédent? Pourquoi ne pas faire une nouvelle sous-vue et animer cela en vue (et l'ancien). Si ce n'est pas ce que vous voulez dire, veuillez clarifier. –

1

Oui, c'est mal se comporter mal. La réponse de Jongsma est la meilleure. Si vous voulez recréer les contrôleurs, j'ai trouvé cela fonctionne:

[parent performSelectorOnMainThread:@selector(showMyItem:) 
         withObject:myNextItem 
         waitUntilDone:NO]; 
[self.navigationController popViewControllerAnimated:NO]; 

performSelectorOnMainThread retards d'exécution de la méthode jusqu'à la prochaine exécution de la boucle principale, et par le contrôleur précédent est supprimé et déjà Le contrôleur de navigation est dans un état stable.

1

J'ai résolu cette question - il suffit d'afficher la vue actuelle et d'en créer une nouvelle, créée pour l'objet suivant dans la liste. La seule chose à retenir est de sauvegarder la référence au contrôleur de navigation avant l'appel de pop, car après cela, self.navigationController devient nul.

Questions connexes