2012-10-24 6 views
14

enter image description hereSegue między dwa kontrolery widoku

Na moim ujęć (pokazany powyżej), mam ViewController który posiada MKMapView z adnotacjami. Adnotacje te zawierają ikonę ujawnienia, która po dotknięciu powinna nawigować użytkownika do innego kontrolera ViewController. W tym celu utworzyłem pchnięcie pomiędzy kontrolerami widoku. Nadałem mu identyfikator "showDetail" i zaimplementowałem następujący kod.

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

Jednak pojawia się następujący błąd.

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

Gdzie się mylę? Próbowałem zmienić mój źródłowy UIViewController na UINavigationController, ale widok wtedy wyświetla się jako czarny ekran.

+0

Czy możesz opublikować zrzut ekranu swojego scenorysu za pomocą obu kontrolek ViewControllers? – Mariusz

+0

@Mariusz pytanie zaktualizowane! Dziękuję Ci. – Jonathan

+0

Spróbuj osadzić docelowy kontroler ViewController w kontrolce NavigationController i przeciągnij swoją segue z MapViewController do kontrolera NavigationController. – Mariusz

Odpowiedz

38

Musisz ustawić kontroler UIViewController jako główny kontroler UINavigationController (lub przepchnięty przez kontroler widoku w/navcontroller). Aby to zrobić

  • Przeciągnij nowy kontroler nawigacyjny do swojego ujęć - to przez domyślnie być dołączone do kontrolera Tableview
  • Usuń sterownik tableview Kliknij prawym przyciskiem myszy na kontrolerze navgiation i podłącz „root View regulator”własność do istniejącego kontrolera widoku
  • Przesuń strzałkę od punktu wejścia sterownika celu korzeń widoku kontrolera
+0

To działa! Dziękuję Ci. Aby sprawdzić, czy mam rację, mam teraz TabBarController i UINavigationController. Czy nie ma kontrolera, który mógłby obsłużyć oba? – Jonathan

+0

Sprawdź tę dokumentację: http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html#//apple_ref/doc/uid/TP40011313-CH6-SW1 Kroki są pod nagłówkiem "Tworzenie obiektów za pomocą storyboardu". –

+0

Jest bardzo przydatny! – Pierry

41

Najprostszy sposób to zrobić, to wybrać widok kontrolera chcesz być korzeniem hierarchii nawigacji i wybierz

Editor > Embed In > Navigation Controller 

Stwarza to nowy kontroler nawigacyjny i haki wszystko dla ciebie.

0

Sprawdź następujące kroki: 1. Kliknij połączenie między dwoma kontrolerami widoku. 2. kliknij atrybut inspektora 3. Ustaw identyfikator na "showDetail". 4. Zapisz i uruchom.