Я представляю контроллер представления модально с его UIModalPresentationStyle
, настроенным на адаптивный стиль UIModalPresentationPopover
. Этот стиль в горизонтально компактной среде (портрет iPhone) будет отображаться на весь экран. В ровной по горизонтали и компактной по вертикали среде (iPhone 6 Plus в альбомной ориентации) он будет отображаться на листе формы. А в обычной среде (iPad) он будет отображаться как всплывающее окно. Это желаемое поведение.
Мне нужно программно определить, как этот контроллер будет фактически отображаться — лист формы, полноэкранный режим или всплывающее окно. Как я могу определить это из представленного контроллера представления?
Причина в том, что мне нужно добавить кнопку «Готово» только в том случае, если она не находится во всплывающем окне. (Или скройте его, если он находится во всплывающем окне.)
Создание контроллера представления:
let viewController = ...
viewController.modalPresentationStyle = .Popover
let popoverController = viewController.popoverPresentationController
popoverController?.barButtonItem = settingsButton
presentViewController(viewController, animated: true, completion: nil)
Внутри viewController:
- (void)viewDidLoad {
[super viewDidLoad];
//self.modalPresentationStyle is Popover even in the case where it's presented over the full screen
//self.popoverPresentationController is not nil even when presented full screen
}