Cómo detectar cuándo se descarta un popover en iOS 9

Estoy actualizando una aplicación para usar storyboards universales. He creado un popover segue a un nuevo controller de vista usando el generador de interfaces al arrastrar desde un button a mi nuevo controller de vista y seleccionando 'Present As Popover' como el tipo de segue.

Cuando el usuario presiona fuera del popover (desestimándolo) necesito que me notifiquen en el controller de vista de presentación para que pueda deshacer sus acciones. ¿Cómo puedo hacer esto?

Normalmente, habría creado el popover manualmente e hice que mi viewcontroller fuera el delegado del popover; permitiéndome usar la llamada de delegado popoverControllerDidDismissPopover. Sin embargo, esto está en desuso en iOS9 e incluso si no fuera así, no tengo idea de dónde encontrar el popover para que pueda configurar su delegado en mi controller de vista.

    No estoy seguro de qué método estás refiriendo como en desuso pero puedes usar UIPopoverPresentationControllerDelegate para lograr esto. Algo como:

     override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "popoverSegue" { let vc = segue.destinationViewController sortVC.modalPresentationStyle = .Popover sortVC.popoverPresentationController?.sourceRect = filterButton.bounds sortVC.prefernetworkingContentSize = CGSizeMake(216, 150) sortVC.popoverPresentationController!.delegate = self } } 

    Y luego usa el

     func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) 

    método para manejar su despido

    El método popoverControllerDidDismissPopover: ha sido reemplazado por popoverPresentationControllerShouldDismissPopover: porque UIPopoverControllerDelegate ha sido reemplazado por UIPopoverPresentationControllerDelegate .

    Desde su controller de presentación de vista, cumpla con el nuevo protocolo y configure el delegado para el controller de presentación de popover en prepareForSegue: ::

     class MyPresentingViewController: UIViewController, UIPopoverPresentationControllerDelegate { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let popoverPresentationController = segue.destinationViewController.popoverPresentationController { popoverPresentationController.delegate = self } } func popoverPresentationControllerShouldDismissPopover(popoverPresentationController: UIPopoverPresentationController) -> Bool { return true } } 

    A continuación, puede utilizar el método de delegado para manejar la detección del despido de la forma en que lo intentaba anteriormente.