2017-02-20 3 views
1

У меня есть универсальное приложение и вы хотите добавить контроллер разделенного представления только для моего режима просмотра. Это означает, что мне нужен контроллер разделенного представления, который не является начальным контроллером представления, который будет обрабатывать взаимодействие между SettingMainTableViewController (страница основных настроек) и SettingDetailViewController (с указанием отдельных настроек). Все руководства и учебные материалы, которые я могу видеть в Интернете, предполагают, что контроллер разделенного представления является начальным контроллером представления.Swift: контроллер разделенного представления на универсальном приложении, который не является контроллером начального представления

Поток будет MainMenuViewController -> SettingMainTableViewController -> SettingDetailViewController, который будет отображаться как разделение, если на ipad и не будет разделено, если iphone. Можно ли это достичь и как я буду заниматься этим?

current setup

ответ

0

без установки его в качестве rootViewController, вы можете использовать его так же, как вы используете другие UIViewController с. Вы можете представить их в текстовом формате или даже направить в стек навигации. Одним из примера, как указано ниже:

let rootViewController: UIViewController = UIViewController() 
rootViewController.view.backgroundColor = UIColor.red 
let navVC: UINavigationController = UINavigationController(rootViewController: rootViewController) 

let detailViewController: UIViewController = UIViewController() 
detailViewController.view.backgroundColor = UIColor.blue 

let splitVC: UISplitViewController = UISplitViewController() 
splitVC.viewControllers = [navVC, detailViewController] 
self.present(splitVC, animated: true, completion: nil) 

Позвольте мне знать, если у вас есть какие-либо сомнения

+0

Спасибо за ответ. Если я добавлю этот код в viewDidAppear, тогда он отобразит только контроллер красного фона, если устройство является ipad и синим контроллером просмотра, если устройство является iphone, но никогда не представляет их как в виде разделения. –

+0

@ R.Ham, я вернусь к вам через несколько минут на этом – KrishnaCA

+0

@ R.Ham, чтобы заставить это вести себя как splitViewController в раскадровке, есть несколько изменений, которые необходимо выполнить. Я улучшу свое редактирование, чтобы ответить на них. – KrishnaCA

0

Техника, которую я предпочитаю использует «вид контейнера контроллер» (Google это) в качестве контроллера зрения корень. Этот контроллер просмотра переходит между вашей обычной иерархией диспетчера представлений приложений и контроллером разнесенного представления настроек. Вы можете использовать различные переходы для перехода от одного к другому. Хорошим атрибутом этого решения является то, что вы выделяете память только для настроек, когда ее запуск отключается, этот контроллер просмотра может быть освобожден.

РЕДАКТИРОВАТЬ: У вас есть вид контейнера с корневым контейнером. При запуске вы сразу показываете представление A (VC-A). Позже вы решили показать вид B (VC-B). Вы создаете переход, переходите от A к B, а затем в самом конце вы отпускаете контроллер VC-A. Мэтт Нойбург отлично поработал в своих книгах iOS - вот откуда я получил технику. Уверен, что это также рассматривается в другом месте. Интересно, что представление корневого контейнера может также показать некоторый пользовательский интерфейс в его представлении! Получается немного сложнее, но я это сделал.

+0

Я использую вид контейнера в своем приложении. Не могли бы вы немного объяснить или предоставить примерный код того, как это работает? Спасибо –

+0

@ R.Ham См. Править выше –

+0

@David H Привет. Какой Мэтт Нойбург вы видели в этом обращении? –

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

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