Контроллер разделенного представления должен быть корневым контроллером представления - PullRequest
19 голосов
/ 05 апреля 2010

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

Ответы [ 5 ]

21 голосов
/ 05 апреля 2010

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

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

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

EDIT

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

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

3 голосов
/ 26 декабря 2012

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

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

2 голосов
/ 08 февраля 2011

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

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

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

splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];
self.view = splitViewController.view;
1 голос
/ 11 января 2012

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

0 голосов
/ 07 февраля 2013

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

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