У меня есть контроллер представления, который представлен в 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 не вызван. Что мне не хватает?
