2013-09-26 8 views
8

Mam kontroler widoku umieszczony w głównym scenorysie, ale kiedy próbuję zainicjować i załadować kontroler widoku, moja aplikacja ulega awarii. Wersja Xcode, której używam, nie mówi mi właściwie o błędach, które dostaję poprawnie, ale widziałem, że daje mi sygnał sigabrt. Nie wiem, dlaczego to nie działa.Próba zainicjowania kontrolera widoku z zestawu scenariusza

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SelectDateViewController"]; 
    [vc setModalPresentationStyle:UIModalPresentationFullScreen]; 

    [self presentModalViewController:vc animated:YES]; 

Tak to nazwałem. Wszystkie używane przeze mnie nazwy są poprawne, ale nadal nie rozumiem, dlaczego się zawiesza.

+0

podczas tworzenia aplikacji, czy włączyć storyboardy zacząć? – erdekhayser

+0

@foriinrangeawesome Tak, tak zrobiłem. –

Odpowiedz

0

[self presentModalViewController:vc animated:YES]; jest przestarzałe.

Spróbuj: [self presentViewController:vc animated:YES completion:nil];

+0

To może być powód. Zastanawiam się, dlaczego nie daje mu to jednak ostrzeżenia. – erdekhayser

6

Ustaw punkt przerwania w ostatniej kolejce, aby zweryfikować vc (a także storyboard) nie są zerowe.

presentModalViewController ulegnie awarii, jeśli jego argument viewController będzie zerowy.

Jeśli oba są zerowe, nazwa zestawu scen jest prawdopodobnie niepoprawna (mniej prawdopodobne).

Jeśli po prostu vc jest zerowe, to identyfikator jest niepoprawny (w kodzie lub w scenorysie). Upewnij się, że ID Storyboard VC (jak zaznaczono na zrzucie ekranu) pasuje do Twojego opisu. Zwyczajowo nie należy wybierać nazwy klasy (ponieważ w scenorysach może znajdować się więcej niż jedna instancja danej klasy).

Identyfikator scenariusza uwzględnia wielkość liter i musi być unikalny. Znajduję pewny sposób podpalania, aby ustawić jego nazwę w tym polu po wybraniu kontrolera widoku i naciśnięciu przycisku powrotu do edycji końcowej (nie wystarczy kliknąć pole). Zauważyłem pewne uszkodzenia występujące w storyboardach podczas konwersji z Xcode 4 na 5 i odwrotnie, więc pomoc w plist/xml może również pomóc w nurkowaniu.

Storyboard ID

Edit: także czas, kiedy nazywa się to ważne, patrz presentModalViewController not working. Upewnij się, że kontroler podglądu odbierający komunikat został już wyświetlony (tj. Wywoływany w viewDidAppear, a nie viewDidLoad).

Jak wspomniano przez Abdullah, należy prawdopodobnie ruszyć przestarzałej metody do:

[self presentViewController:vc animated:YES completion:nil]; 

w tym przypadku blok Zakończenie może być zerowa bez problemu, ale nie musi być vc.

0

Czy ustawiłeś początkowy ViewController z Storyboard? Jeśli tak, to upewnij się, że identyfikator Storyboard jest taki sam. Jeśli używasz storyboard można bezpośrednio obecny lub odrzucenie viewController ma potrzeby pisania kodu dla niego

nadzieję, że to pomoże Ci :)

Powiązane problemy