У меня есть контроллер представления, который представлен во всплывающем окне с использованием раскадровки.
В контроллере представления представления у меня был следующий код:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let svc = segue.destinationViewController as? SettingsViewController {
svc.popoverPresentationController?.delegate = self
}
}
Однако оказывается, что представленный контроллер представления, даже несмотря на то, что он отображается как всплывающее окно, имеет modalPresentationStyle
'.Modal
и, следовательно, nil
popoverPresentationController
. Странный!
Итак, я обновил код следующим образом:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let svc = segue.destinationViewController as? SettingsViewController {
svc.modalPresentationStyle = .Popover
svc.popoverPresentationController?.delegate = self
}
}
Делегат svc.popoverPresentationController
теперь настроен нормально, но если всплывающее окно закрывается пользователем, нажимающим снаружи, ни один из методов делегата UIPopoverPresentationControllerDelegate
(например, popoverPresentationControllerShouldDismissPopover
не вызывается. Что мне не хватает?