Je travaille sur une application iPhone fonction de la vue qui a le flux suivant:Navigation Controller ne pas pousser/Popping Voir Contrôleurs
search -> (list | map) -> details
Pour réaliser les transitions entre les vues, j'ai une UINavigationController, la recherche Contrôleur de vue étant la racine. Après un utilisateur effectue une recherche, je passe à une vue avec un contrôle segmenté, qui agit comme un onglet pour basculer entre la fonctionnalité de liste et de carte (par une suggestion d'un related question que j'avais). Cette vue contient un UIViewController, qui me permet de basculer entre la vue liste/carte lorsqu'un utilisateur appuie sur le contrôle segmenté. Je vais bien jusqu'à ce point. En d'autres termes, je suis capable de passer de la vue de recherche à un SwitchViewController, qui me permet de basculer entre les vues de liste et de carte. À partir du SwitchViewController, je peux également revenir à la vue de recherche.
Comme vous pouvez le voir à partir du flux mentionné ci-dessus, je voudrais fournir la possibilité de passer à une vue détaillée. Chaque ligne de ma table dans la vue de liste contient un bouton de divulgation des détails pour permettre à l'utilisateur d'accéder à une vue détaillée. Le problème est que, quand j'essaie de pousser la vue des détails sur la pile de navigation, rien ne se passe. Ci-dessous est la méthode déléguée (à partir de mon contrôleur de liste) pour gérer le bouton de divulgation des détails en cours d'écoute. J'ai mis en place des points de rupture, donc je sais que le code est en cours d'exécution. Le contrôleur de navigation ne veut tout simplement pas pousser le module detailsController sur la pile (je suppose que je n'ai pas de pointeur vers le bon UINavigationController).
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
if (detailController == nil)
{
detailController = [[DetailsViewController alloc] init];
}
[self.navigationController pushViewController:detailController animated:YES];
}
En supposant que je manque probablement un pointeur vers le contrôleur de navigation, j'exposais une propriété UINavigation sur ma liste et une vue sur la carte (NavigationController est en lecture seule) et les initialisés avec un pointeur vers le contrôleur de navigation de mon SwitchViewController (la vue responsable de la commutation entre les vues liste/carte lorsqu'un utilisateur change la valeur du contrôle segmenté). Malheureusement, cela n'a pas résolu le problème.
Suis-je sur la bonne voie? Si c'est le cas, comment puis-je voir que ma vue a un pointeur vers le contrôleur de navigation correct? Dois-je ajouter un délégué, ce qui me permet d'appeler une fonction dans le SwitchViewController qui passe dans la vue des détails (cela semble désordonné)?
Est-ce que vôtre est une application basée sur la vue? – Warrior
Ouais! Merci pour la question. Je mettrai à jour mon texte pour l'indiquer. – senfo