Раскадровка, UIViewController и UISplitViewController - PullRequest
15 голосов
/ 28 января 2012

Попытка сделать приложение на основе раскадровки для iPad.В нем мне нужно перейти с начального экрана (UIViewController) на главный экран (UISplitViewController), а затем в полноэкранный режим (снова UIViewController).

Я видел ряд обсуждений в Интернете (по крайней мере, несколько -on stackoverflow), заявив, что UISplitViewController не может быть использован в приложении на основе раскадровки каким-либо иным способом, кроме RootViewController.Некоторые потоки содержат обходные пути, и есть также альтернативный метод splitview (https://github.com/mattgemmell/MGSplitViewController), чтобы справиться с этим.

Но что я не могу понять, так это то, почему в документации Apple говорится об обратном. Вот ссылка к главе из библиотеки Apple iOS 5.0. В ней говорится:


Создание контроллера разделения представления с использованием раскадровки

Чтобы добавить контроллер разделения представления в раскадровку вашего приложения:

  1. Откройте основную раскадровку приложения.
  2. Перетащите контроллер разделения представления из библиотеки. Это также создает контроллеры представления для двух панелей контроллера разделения представления.
  3. Для каждого из контроллеров представления, входящих в состав разделенного представления, используйте инспектор удостоверений, чтобы задать имя класса контроллера представления.

Чтобы представить интерфейс разделения представления, выполните одно из следующих действий:

  • Отобразите его как первую сцену, выбрав сцену и установив флажок «Is Initial View Controller» иили Инспектор атрибутов.
  • Отобразите его из другой сцены, добавив к нему модальный переход.
  • Отобразите его программно, вызвав executeSegueWithIdentifier: sender: метод, чтобы инициировать модальный переход.

Я пробовал это разными способами, но подходы, описанные в последних двух утверждениях, никогда не работали.Оба модальных segue и executeSegue ... терпят неудачу с общеизвестной ошибкой:

"*** Завершение приложения из-за невыполненного исключения NSInvalidArgumentException, причина:« Приложение попыталось представить контроллеры Split View модально... "

Кто-нибудь может это объяснить?Это ошибка в XCODE / iOS 5.0 или ошибка в документации?

С уважением, Петр

Ответы [ 4 ]

2 голосов
/ 30 января 2012

Согласно этой статье Apple , контроллер разделенного представления должен быть корневым. Вот фрагмент кода:

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

1 голос
/ 07 сентября 2012

Кажется, документация была обновлена ​​вскоре после того, как этот вопрос был опубликован.Согласно новой документации, нет возможности перейти к раскадровке.Вот досада!

0 голосов
/ 24 апреля 2013

Что касается меня, я использовал MGSplitViewController для реализации SplitView с модальными или push-переходами.Попробуйте, это работает!

0 голосов
/ 04 октября 2012

Да, возможен переход из UIView в UISplitView.Вы должны использовать пользовательский переход.

Прочитайте эту ссылку (переведите ее с японского)

UIViewController в UISplitViewController

...