0

J'ai un contrôleur de barre d'onglets qui contient 4 vues. 3 vues sont très basiques. Juste une tableview avec des données (appelez l'une de ces vues SimpleTableView). La 4ème vue pointe vers un contrôleur de navigation avec deux boutons sur sa vue (Appelons cette vue MainNavView). Les deux boutons pointent vers des vues différentes (appelons-les ViewA et ViewB) et un utilisateur peut revenir à la vue avec deux boutons (MainNavView) en appuyant sur le bouton de retour dans la barre de navigation. Fonctionne très bien.Accédez à une vue dans un contrôleur de navigation

Maintenant, voici mon problème. Je veux le didSelectRowAtIndexPath de SimpleTableView pour montrer ViewA du contrôleur de navigation. Et quand un utilisateur atterrit sur cette page, il peut appuyer sur le bouton de retour sur la barre de navigation et le MainNavView apparaît.

Navigation de MainNavView à viewA se fait avec un (push) Segue:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil]; 
} 

Le MainStoryBoard contient une Segue d'un tableviewcell intérieur MainNavView à viewA appelé "segueIdentifier".

J'ai essayé de faire un autre Segue d'un tableviewcell intérieur SimpleTableView à viewA et l'exécution de ce code à nouveau:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil]; 
} 

mais je reçois cette erreur

NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController 

Maintenant, cette erreur est facilement corrigé quand je intégrer SimpleTableView à l'intérieur d'un contrôleur de navigation mais ce n'est pas ce que je veux parce que le bouton retour renvoie l'utilisateur à SimpleTableView et non MainNavView.

J'espère que tout est clair et que quelqu'un peut m'aider avec ce problème de navigation. Est-ce possible avec un segue modal au lieu de pousser?

Répondre

0

Vous ne pouvez pas utiliser le Push Segue d'un contrôleur qui n'est pas un UINavigationController, vous devez utiliser le modal Segue pointant directement ViewA. Je l'ai juste essayé, ça fonctionne parfaitement!

Du point de vue de l'utilisateur, sont des transitions poussoirs explicites enchaînements de/vers la même hiérarchie de vue ... Je pense que l'aide d'un enchaînement de poussée d'un autre onglet pourrait désorienter l'utilisateur ...

+0

J'ai essayé avec un modal et cela fonctionne mais ViewA ne montrera pas une barre de navigation avec un bouton de retour à "MainNavView". –

Questions connexes