2015-01-08 2 views
6

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

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

ответ

10

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

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


Оригинал ответа

Это является дубликатом этого: UISplitViewController in portrait on iPhone shows detail VC instead of 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; 

    } 
} 
+0

не дубликат, это решение предназначено для отображения основного или детального вида. Я ищу ответ для одновременного отображения как основного, так и подробного, с основным видом, охватывающим часть подробного представления. Не могли бы вы указать мне на другой ответ или опубликовать новое решение? –

+0

Ах. Я неправильно понял. В UISplitViewController есть свойство 'preferredDisplayMode'. Это работает? Не уверен, что это свойство с моей головы. – lewiguez

+0

Нет. Это не сработает. Просто разбивает экран. :( – lewiguez

1

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

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController: (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { 

    // Force master view to show in portrait and landscape 

    return NO; 
} 
Смежные вопросы