2016-08-21 3 views
0

У меня есть UIViewController. В этом UIViewcontroller есть контейнер. В этом контейнере находится контроллер панели вкладок. Один из вкладок - это встроенный в навигатор навигатор PageViewController. Одна из страниц - UITableViewController.отображает UIViewController в контейнере

UIViewController->Container->TabBarController->NavigationController->PageViewController->UITableViewController 

Если вы нажмете на одну из Ячейков, я хочу отобразить UIViewContoller. Но этот UIViewcontroller должен находиться только в контейнере и в NavigationController. Если я нажимаю на ячейку, вы можете увидеть на 0.3 сек правильный результат. С помощью кнопки «назад» на панели навигации. Но тогда UIViewController переключится на полный размер.

отобразилась UIViewController следующим образом:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewControllerWithIdentifier("article") 
     self.presentViewController(vc, animated: true, completion: nil) 

я получаю следующее Уоринг:

Presenting view controllers on detached view controllers is discouraged <Test.AllArticlesTableViewController: 0x7f812bd227d0>. 

Я надеюсь, что кто-то может мне помочь.

+0

Что такое я в контексте выше? Последний 'UITableViewController'? возможно, вместо этого попробуйте 'self.navigationController.presentViewController'. Я думаю, что 'UIPageViewController' технически добавляет контроллеры представлений динамически, поэтому, когда вы представляете это, вы получаете это предупреждение, так как это« отдельный »' UIViewController' в 'UIPageViewController' – DMCApps

+0

. Вы правы. Я не получаю сообщение об ошибке с помощью (self.navigationController! .presentViewController (vc, animated: true, completion: no)). Но ViewController все еще находится в полноэкранном режиме! Как я делаю этот ViewController частью NavigationController – ReasyEasyPeasy

ответ

1

Представление контроллера вида по умолчанию будет занимать весь экран. Я считаю, что то, что вы ищете, - это нажать контроллер представления в стек навигации. Используйте pushViewController(_:animated:).

Пример:

self.navigationController.pushViewController(vc, animated: true) 

"Нажатие контроллер вид вызывает его вид для встраивания в навигации интерфейс."

Для получения дополнительной информации обратитесь к Apple docs.

+0

эй, это хорошо. Я попробовал «self.navigationController? .pushViewController (vc, animated: true)», и теперь UIViewControler отображается правильно. Но теперь случается что-то странное: он загружает UIViewController два раза. И я должен нажать 2 раза на «назад», чтобы вернуться к моему UIViewTableController. Анимация, когда она представляет viewController, также 2 раза. Поэтому его UITableViewController -> myUiViewController -> myUiViewController. – ReasyEasyPeasy

+0

Можете ли вы опубликовать свой метод, в котором есть свой код, чтобы я мог взглянуть? Также, пожалуйста, проверьте, что вы не представляете/не нажимаете контроллер просмотра нигде, например, раскадровки и т. Д. –

+0

Эй, я нашел ошибку, я подключил камеру с помощью UIViewController в раскадровке. Большое спасибо! – ReasyEasyPeasy

Смежные вопросы