iPad SplitViewController с меню в портретном режиме, как приложение настроек

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


person Smalldevil    schedule 13.04.2010    source источник


Ответы (8)


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

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

- (BOOL)splitViewController: (UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
{
    return NO;
}
person CornPuff    schedule 08.11.2011
comment
Это устарело в iOS 8. Используйте свойство primaryDisplayMode, для которого установлено значение UISplitViewControllerDisplayModeAllVisible для iOS 8 и более поздних версий. - person LightningStryk; 30.12.2014

Вам обязательно стоит взглянуть на MGSplitViewController Мэтта Геммелла.

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

person samvermette    schedule 09.09.2010

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

[splitViewController setHidesMasterViewInPortrait:NO];

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

person kennytm    schedule 13.04.2010
comment
Недокументированный или частный API? Это важный вопрос при работе с Apple ;-) - person Paul Lynch; 13.04.2010
comment
@paull: Недокументированное == Личное. - person kennytm; 13.04.2010
comment
Хотя помните: иногда Apple отменяет документ, потому что они хотят быть единственными, кто использует этот эффект. В этом случае они много раз ОТКЛОНЯЮТ приложения, которые просто МОДЕЛИРУЮТ частные API с изменениями. У меня такое случалось, когда я слишком близко подходил к внешнему виду проклятой функции редактирования контроллера панели вкладок MORE. Они ограничивают количество иконок, которые вы можете расположить до 16. Я попытался реализовать что-то похожее на это ... и они отказали мне, сказав, что это могло бы сбить с толку пользователей, если бы моя работала близко, но не так же, как их (например, моя сделал чуть больше .. разрешил больше 16). - person Jann; 14.04.2010

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

person Kristopher Johnson    schedule 23.04.2010

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

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
person ninefifteen    schedule 17.09.2014

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

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
person ccwasden    schedule 14.09.2014

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

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

Привет, Андреас

person anka    schedule 18.04.2010
comment
привет анка, я видел ваш пример исходного кода с несколькими подробностями, но вы не реализовали метод didselect в корневом представлении ... можете ли вы дать мне образец для этого ... - person Linux world; 24.09.2010
comment
Привет, я добавил несколько примеров кода для этого в свой проект MasterDetail. Проверьте репозиторий git по адресу github.com/anka/bw_examples/tree/master// MasterDetail. Привет, Андреас - person anka; 04.10.2010
comment
кажется многообещающей, отличная идея, кстати. - person bentford; 25.01.2011

В Swift:

splitViewController.preferredDisplayMode = .allVisible

person rjobidon    schedule 02.03.2016