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