Я хочу добавить tableViewController в качестве контроллера дочернего представления containerViewController (показано ниже). По словам Apple, View Controller Programming Guide я могу добиться этого с помощью следующих строк кода внутри моего containerViewController:Добавить представление контроллера детского просмотра в подпункт родительского контроллера представления
[self addChildViewController:tableViewController];
[self.view addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
На самом деле, это работает отлично. Теперь проблема заключается в том, что я не хочу добавлять представление tableViewController в качестве поднабора корневого представления containerViewController. Вместо этого я хочу добавить его как подпункт containerView (см. Изображение), который сам является подвидью корневого представления containerViewController. Поэтому я изменил код выше выглядит следующим образом:
[self addChildViewController:tableViewController];
[self.contentView addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
Теперь, когда я запустить приложение, он выходит из строя сразу с этой ошибкой:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller: should have parent view controller: but actual parent is:'
Что здесь проблема? Невозможно добавить представление childViewController к определенному под вид его контейнераViewController? Или как я могу достичь этого без ошибки в иерархии диспетчера представлений?
вы уверены, что и Вы проверили этот код? Я пробовал это, и он * делает * имеет значение, добавляете ли вы представление childViewController в корневой вид containerViewController или в любое из его подзонов. – Mischa
@Mischa Исходный код, включенный в ответ. Пожалуйста, проверьте. – Anupdas
+1 для таблицыViewController.view.frame = self.contentView.bounds; – onmyway133