Sur mon storyboard (illustré ci-dessus), j'ai un ViewController qui contient un MKMapView avec des annotations. Ces annotations contiennent une icône de divulgation qui, lorsqu'elle est exploitée, doit permettre à l'utilisateur d'accéder à un autre ViewController. Pour ce faire, j'ai créé une transition Push entre les contrôleurs de vue. Je lui ai ensuite donné un identifiant de 'showDetail' et implémenté le code suivant.
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
[self performSegueWithIdentifier:@"showDetail" sender:self];
}
Cependant, j'obtiens l'erreur suivante.
Could not find a navigation controller for segue 'showDetail'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
Où vais-je mal? J'ai essayé de changer mon source UIViewController en UINavigationController, mais la vue ne s'affiche alors que sur un écran noir.
Vous devez en fait définir votre UIViewController en tant que contrôleur racine d'un UINavigationController (ou forcé à partir d'un contrôleur de vue avec un contrôleur de navigation). Pour faire ça
La manière la plus simple de le faire est de sélectionner le contrôleur de vue que vous voulez être la racine de votre hiérarchie de navigation et de choisir
Editor > Embed In > Navigation Controller
Cela crée le nouveau contrôleur de navigation et raccorde tout pour vous.
vérifiez ces étapes: 1. cliquer sur la connexion entre deux contrôleurs de vue . 2. Cliquez sur Inspecteur d'attributs 3. définissez l'identifiant sur "showDetail" . 4. sauvegarder et exécuter.