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

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

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

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

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

РЕДАКТИРОВАТЬ

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

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

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

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

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

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

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

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

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

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

Interesting Posts
Давайте будем гением компьютера.