Należy zdać sobie sprawę z tego, że gdy aplikacja kontrolera podzielonego widoku uruchamia się na telefonie iPhone 6 Plus w trybie portretowym, po prostu pokazuje kontroler widoku podzielonego w stanie zwiniętym. Domyślnie ma to szczegółowy widok wciśnięty powyżej dowolnego kontrolera widoku w głównym kontrolerze nawigacyjnym.
Sposób zatrzymania określonego widoku (takiego jak pusty widok szczegółów, który można początkowo pokazać na iPadzie) przed wyświetleniem podczas uruchamiania lub po jakimkolwiek obróceniu do pionu, polega na obsłużeniu tego w obiekcie splitViewController: collapseSecondaryViewController: onPrimaryViewController : Przekaż metodę. Zostanie on wywołany przy uruchomieniu na telefonie iPhone lub telefonie iPhone 6 Plus w pozycji pionowej przed prezentacją.
W ten sposób nie powinieneś potrzebować żadnego specyficznego dla urządzenia kodu.
W najprostszej postaci to będzie wyglądać:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController
{
if ([secondaryViewController isKindOfClass:[BlankViewController class]])
{
// If our secondary controller is blank, do the collapse ourself by doing nothing.
return YES;
}
// Otherwise, use the default behaviour.
return NO;
}
Oczywiście, wtedy trzeba zrobić odwrotnie w splitViewController: separateSecondaryViewControllerFromPrimaryViewController: Aby utworzyć i zwracają BlankViewController dla nowego widoku wtórnym, jeśli nie chcesz, aby twój najwyższy główny kontroler widoku znalazł się po stronie szczegółów po rozwinięciu widoku podzielonego.
Bądź świadomy miksowania własnej implementacji z Apple w tych metodach, robią szalone rzeczy, takie jak osadzanie UINavigationControllers w innych kontrolerach UINavigationController.Zobacz moją odpowiedź pokrewną tutaj: https://stackoverflow.com/a/26090823/4089333
Czy znalazłeś jakieś rozwiązanie? Nawet mam ten sam problem. –
Nie znalazłem rozwiązania problemu. Pamiętam z filmów WWDC, że widok podzielony zarządza wewnętrznie ruchem między kontrolerami nawigacyjnymi zarówno w widoku głównym, jak i szczegółowym. Najprawdopodobniej jest to błąd, ponieważ nawet hacki nie zapobiegają takiemu zachowaniu. Mogę się mylić. –