Подтвердить что ты не робот

Сплит-контроллер должен быть контроллером корневого представления

Всякий раз, когда я пытаюсь представить UISplitViewController, модально приложение аварийно завершает работу. Таким образом, он всегда должен быть контроллером корневого представления. Может ли кто-нибудь подтвердить это?

4b9b3361

Ответ 1

Из Руководство по программированию Apple iPad:

Просмотр контроллеров разделенных видов всегда должен быть установлен как корень вид вашего окна приложения. Вы никогда не должен представлять собой разделенный вид внутри навигационной панели или панели вкладок интерфейс.

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

ИЗМЕНИТЬ

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

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

Ответ 2

У меня возникла такая же проблема с той же ошибкой, когда я попытался перейти от обычного контроллера представления контента (т.е. без проблем переходить от контроллера табуляции или контроллера nav).

К счастью, я нашел способ обойти это, вставив контроллер навигации между контроллером VC и контроллером разделения. Другими словами, перейдите от VC к контроллеру nav, затем нарисуйте связь отношений между навигационным контроллером и контроллером разделения. Таким образом, создание экземпляра разделенного вида по-прежнему не требует кодирования.

Ответ 3

Конечно, вы можете использовать UISplitViewController, не используя его в качестве контроллера корневого представления. В моем проекте я использую его следующим образом:

  • Показать мой собственный viewcontroller в модальном методе:
[self presentModalViewController:mainViewController animated:YES];
  • В mainViewController у меня есть
UISplitViewController *splitViewController;

и в - (void)viewDidLoad установите splitViewController.view в mainViewController.view

splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];
self.view = splitViewController.view;

Ответ 4

UISplitController МОЖЕТ быть установлен под UITabBarController. Я делаю это. Просто используйте поиск на этом форуме - я нашел хотя бы один хороший образец программного обеспечения.

Ответ 5

Да. Вам нужно будет использовать RootViewController, и он должен быть унаследован от UITableViewController. Вы можете взглянуть на этот учебник