iPad SplitViewController с меню в портретном режиме, как приложение настроек - PullRequest
30 голосов
/ 13 апреля 2010

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

Ответы [ 8 ]

49 голосов
/ 09 ноября 2011

Это волшебство, которое вам нужно:

Этот метод находится в UISplitViewControllerDelegate, доступном на iOS 5.0

- (BOOL)splitViewController: (UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
{
    return NO;
}
11 голосов
/ 09 сентября 2010

Вам определенно стоит взглянуть на MGSplitViewController Мэтта Джеммелла .

MGSplitViewController является открытым замена источника для UISplitViewController, с различными полезные улучшения.

9 голосов
/ 13 апреля 2010

К сожалению, это недокументированный метод (т.е. частный API).

[splitViewController setHidesMasterViewInPortrait:NO];

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

8 голосов
/ 23 апреля 2010

Самый простой способ получить желаемый эффект - просто не использовать UISplitView. Вместо этого просто создайте нормальное представление, поместите табличное представление с левой стороны, подробное представление - с правой стороны, а затем установите соответствующие параметры автоматического изменения размера так, чтобы все выглядело правильно как в портретной, так и в альбомной ориентации.

5 голосов
/ 17 сентября 2014

Как заявил ccwasden, shouldHideViewController устарело с iOS8. В Objective-C используйте ...

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
5 голосов
/ 15 сентября 2014

Поскольку shouldHideViewController устарела в iOS8, вам нужно будет использовать это вместо (Swift):

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
4 голосов
/ 18 апреля 2010

некоторые люди задали мне тот же вопрос в нашем блоге, и я нашел решение для этого. Вы найдете его в конце моего блога Ваш первый контроллер с разделенным видом | Seaside .

В общем, все, что вам нужно сделать, это создать подкласс UISplitViewController и переопределить метод willAnimateRotationToInterfaceOrientation: duration: и настроить ваш основной и подробный виды, когда ориентация интерфейса изменится на портретный режим.

Ура, Andreas

2 голосов
/ 02 марта 2016

В Свифт:

splitViewController.preferredDisplayMode = .allVisible

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...