UISplitViewController отображает главный вид выше детали в портретной ориентации

У меня есть UISplitViewController, встроенный в UINavigationController с кнопкой UINavigationItem для переключения отображения главного представления в портретной ориентации. Я хочу показать главный вид над детальным видом, когда представление сначала загрузится в портретной ориентации.

Любые подобные примеры, которые я нашел, показывают основные и подробные представления, разделяющие экран в портретной ориентации, но мне нужно, чтобы подробный вид был полноэкранным в портрете с основным видом, охватывающим подробный вид, когда сначала загружается UISplitViewController (как будто основной вид был вынут слева). Кто-нибудь знает как это сделать?

Изменить : Это не дубликат. Ответ обнаружен в комментариях. Решением является использование preferredDisplayMode в UISplitViewController и установка его в UISplitViewControllerDisplayModePrimaryOverlay

Оставьте исходный ответ для контекста комментариям и потомкам.


Оригинальный ответ

Это дубликат этого: UISplitViewController в портрете на iPhone показывает детали VC вместо master

Для справки, решение в этом случае должно было иметь контроллер вида, который реализует UISplitViewControllerDelegate используя следующий код:

 - (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { if ([secondaryViewController isKindOfClass:[UINavigationController class]] && [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]] && ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) { // Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded. return YES; } else { return NO; } } 

В качестве альтернативы вы можете использовать:

  - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController: (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { // Force master view to show in portrait and landscape return NO; } 
Interesting Posts
Давайте будем гением компьютера.