Как создать переход от UIViewController к UISplitViewController

Вот моя настройка для приложения для iPad. Я создал новый проект с помощью приложения Single View с UIStoryboard.

XCode создал основной UIViewController в качестве точки входа. В представлении я разместил панель инструментов с кнопкой. Затем я вставил UISplitViewController в сторборд.

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

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

На моей панели инструментов будет много других кнопок, которые будут загружать другие представления.

Вопрос в том, как использовать раскадровку, чтобы связать конфигурацию загрузки разделенного просмотра? Все результаты google не показали мне примеров такой настройки.

заранее спасибо


person IIS7 Rewrite    schedule 11.12.2012    source источник


Ответы (3)


Вы не можете этого сделать. Контроллер разделенного представления должен быть корневым контроллером представления окна.

Из «Каталога контроллеров представления для iOS»: «Контроллер разделенного представления всегда должен быть корнем любого создаваемого вами интерфейса. Другими словами, вы всегда должны устанавливать представление из объекта UISplitViewController в качестве корневого представления окна вашего приложения».

После редактирования: я только что попробовал метод кода, который я упомянул в своем комментарии, и он сработал. Итак, в вашей раскадровке вы можете настроить контроллеры так, как хотите, просто не делайте никакой связи между вашим первым контроллером и контроллером разделенного представления. Затем в коде переключитесь на него с помощью этого кода:

-(IBAction)switchToSplit:(id)sender {
    UISplitViewController *split = [self.storyboard instantiateViewControllerWithIdentifier:@"Split"];
    self.view.window.rootViewController = split;
}
person rdelmar    schedule 11.12.2012
comment
Вау, это смешно! Вы (имея в виду Apple) имеете в виду, что каждое приложение, использующее UISplitViewController, фактически начинается с него? Я видел много приложений, которые используют разделенный вид, но не запускались с ним. Как они это делают? - person IIS7 Rewrite; 11.12.2012
comment
@ IIS7Rewrite, вы можете представить контроллер модального представления из метода viewDidAppear одного из контроллеров разделенного представления, чтобы он отображался сразу при загрузке приложения. Вы также можете сбросить корневой контроллер представления окна в коде из другого контроллера представления, с которым вы запускаете приложение. Я этого не пробовал. - person rdelmar; 11.12.2012
comment
Меня больше интересует второе решение, если оно работает, поскольку первое звучит немного не так, по крайней мере, когда речь идет о шаблонах проектирования. Мне было бы интересно узнать, делал ли кто-нибудь подобное. Не могу представить, что это редкий случай. - person IIS7 Rewrite; 11.12.2012
comment
Кстати, я только что попробовал это на примере, который я сделал, и он отлично работает. еще раз спасибо. - person IIS7 Rewrite; 11.12.2012
comment
Apple больше не требует, чтобы UISplitViewController был корневым контроллером представления. См. документы сейчас и собственное приложение Apple Podcast, которое помещает UISVC вместо UITabBarController. - person Steve Moser; 23.03.2016

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

Как использовать UISplitViewController в качестве модального Посмотреть контроллер?

person Jan Bühler    schedule 28.11.2014

Возможно, вы захотите использовать файл UITabBarViewController. Хотя Apple не требует, чтобы UISplitViewController был контроллером корневого представления, они поощряют его в большинстве случаев, если только вы не используете его внутри UITabBarViewController, такого как приложение Apple Podcast.

person Steve Moser    schedule 23.03.2016