2012-10-24 16 views
14

enter image description hereSegue zwischen zwei View-Controller

Auf meinem Storyboard (siehe oben), habe ich einen Viewcontroller, die mit Anmerkungen einen MKMapView hält. Diese Annotationen enthalten ein Enthüllungssymbol, das beim Antippen den Benutzer zu einem anderen ViewController navigieren soll. Um dies zu tun, habe ich einen Push-Übergang zwischen den View-Controllern erstellt. Ich habe ihm dann eine ID von 'showDetail' gegeben und den folgenden Code implementiert.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    [self performSegueWithIdentifier:@"showDetail" sender:self]; 
} 

Allerdings erhalte ich die folgende Fehlermeldung.

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.' 

Wohin gehe ich falsch? Ich habe versucht, meine Quelle UIViewController zu einem UINavigationController zu ändern, aber die Ansicht wird dann nur als schwarzer Bildschirm angezeigt.

+0

Können Sie mit beiden ViewControllern einen Screenshot Ihres Storyboards hochladen? – Mariusz

+0

@Mariusz Frage aktualisiert! Vielen Dank. – Jonathan

+0

Versuchen Sie, Ihren Ziel-ViewController in einen NavigationController einzubetten, und ziehen Sie Ihren Übergang vom MapViewController zum NavigationController. – Mariusz

Antwort

38

Sie müssen Ihren UIViewController tatsächlich als Root-Controller eines UINavigationControllers festlegen (oder von einem View-Controller mit einem navcontroller durchlaufen). Um das zu tun

  • Ziehen Sie eine neue Navigation-Controller in Ihr Storyboard - es wird von standardmäßig auf einem Tableview-Controller angeschlossen werden Rechts
  • Löschen der Tableview-Controller auf dem Controller navgiation klicken, und schließen Sie das „Root-Ansicht Controller“Eigenschaft auf Ihren vorhandenen view-Controller
  • den Einstiegspunkt Pfeil aus dem view-Controller an der Controller Wurzel Ansicht verschieben
+0

Es funktioniert! Vielen Dank. Um zu überprüfen, ob ich es richtig verstanden habe, habe ich jetzt einen TabBarController und einen UINavigationController. Gibt es keinen Controller, der beides beherrscht? – Jonathan

+0

Überprüfen Sie diese Dokumentation: http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html#//apple_ref/doc/uid/TP40011313-CH6-SW1 Die Schritte sind unter der Überschrift "Erstellen der Objekte mit einem Storyboard". –

+0

Es ist sehr nützlich! – Pierry

41

einfachste Weg, dies zu tun, ist die View-Controller Sie die Wurzel Ihrer Navigationshierarchie sein sollen, und

Editor > Embed In > Navigation Controller 

Dies schafft die neuen Navigation-Controller wählen und alles für Sie bis Haken nach oben.

0

überprüfen Sie diese Schritte: 1. Klicken Sie auf die Verbindung zwischen zwei View-Controller. 2. Klicken Sie auf den Attributinspektor 3. Setzen Sie den Bezeichner auf "showDetail". 4. Speichern und ausführen.

Verwandte Themen