Модальный UISplitViewController с прозрачным фоном

#ios #swift #uisplitviewcontroller #transparent

#iOS #swift #uisplitviewcontroller #прозрачный

Вопрос:

Мне нужно модально представить UISplitViewController (как на iPhone, так и на iPad), и он должен иметь прозрачный фон (я добавлю вид размытия). Я смог сделать это при представлении UIViewController, но он не работает с контроллером split view. Мой контроллер разделенного представления имеет 2 навигационных контроллера.

Мой результат заключается в том, что главный контроллер представления имеет черный фон.

Спасибо за помощь.

Ответ №1:

Является ли ваш UISplitViewController контроллер корневого представления? В противном случае он может вести себя странно. Для Apple:

Примечание

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

Я использовал это (вызывается из контроллера подробного представления, используя контроллер разделенного представления с двумя навигационными контроллерами.) На этом этапе я хотел сбросить навигационные стеки:

 let firstVC = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController
let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
    // Get a reference the the Master View nav controller
let masterNav = self.splitViewController!.viewControllers[0] as! UINavigationController
    // Set desired VC's as nav stack RootViewControllers        
self.navigationController?.setViewControllers([matchVC], animated: true)
masterNav.setViewControllers([masterMatchTableView], animated: true)
  

Вместо этого вы можете вызвать .pushViewController оба навигационных контроллера, если хотите поддерживать навигационный стек.

Если вы все еще работаете над этим, опубликуйте некоторый код, и я был бы рад взглянуть на него.

Редактировать:

Итак, вы не можете модально представить контроллер разделенного представления: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/SplitViewControllers.html

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

Фрагмент кода, который я опубликовал выше, будет представлять как основные, так и подробные представления одновременно. Или вы можете представить новый VC в качестве подробного представления и установить UISplitViewController.preferredDisplayMode = .primaryHidden для модального представления одного VC.

Комментарии:

1. Есть ли способ представить splitViewController (модально или с помощью push) с прозрачным фоном? Мне нужно, чтобы основной VC и подробный VC были прозрачными.