2013-03-26 19 views
5

Mam dziwny problem UISplitViewController. Mam przycisk w moim kontrolerze widoku głównym, który otwiera widok modalny po stuknięciu (przy użyciu prostego sortowania storyboardów).Modalne znikające po obróceniu UISplitViewController

Jednak widok modalny znika po obróceniu iPada, ale tylko podczas obracania z portretu na krajobraz. Mój kontroler widoku głównego jest ukryty w pionie, podobnie jak w macierzystej aplikacji pocztowej.

Jeśli jestem w krajobrazie (kiedy mistrz jest zawsze widoczny) i otwórz mój modal, obracanie urządzenia działa poprawnie, a mój modal pozostaje na ekranie.

Próbowałem ręcznie uruchamiać programowo, jeśli wywołasz performSegueWithIdentifier: na splitViewController, obracanie działa w obie strony. Ale zastanawiałem się, czy można to naprawić w prostszy sposób, ponieważ mam inne przyciski wyświetlające modały w kontrolerach widoku głównego i nie chcę wykonywać akcji IB dla każdego z nich i tracę zalety scenorysów.

Odpowiedz

1

Niestety tak jest, gdy twój iPad jest w trybie portretowym, masz popover swojego mistrza, nie jest on mistrzem w innym kształcie. Co oznacza, że ​​prezentujemy modalnego przy użyciu tej popover jako presentingViewController, więc po przeniesieniu z pionowej na poziomą metoda splitViewController:willShowViewController uczyni Państwa popover nil jak widać:

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
    // Called when the view is shown again in the split view, invalidating the button and popover controller. 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
    self.masterPopoverController = nil; 
} 

Więc rozumiem, że dopuszczalne jest, że Twój modal idzie z tym. Dzięki temu można zrozumieć, dlaczego po wywołaniu akcji wywołanie performSegueWithIdentifier: na swoim kontrolerze SplitViewController tak się nie stanie, twój modal nie jest już połączony z twoim popover.

Więc możesz zapytać, dlaczego tak się nie dzieje, kiedy przechodzisz z krajobrazu do portretu ... a powodem jest splitViewController:willHideViewController, ukrywa on viewController, że go nie usuwa, więc twój modal jest zawsze podłączony.

Tak, niestety nie ma rozwiązania i trzeba będzie wykonywać czynności kodem ..

Mam nadzieję, że to pomaga,

Roberto

Powiązane problemy