I'm updating an app to use universal storyboards. I've created a popover segue to a new viewcontroller using interface builder by dragging from a button to my new viewcontroller and selecting 'Present As Popover' as the kind of segue.
When the user presses outside of the popover (dismissing it) I need to be notified in the presenting view controller so I can undo their actions. How can I do this?
Normally I would have created the popover manually and made my viewcontroller the popover's delegate; allowing me to use the popoverControllerDidDismissPopover delegate call back. However, this is deprecated in iOS9 and even if it wasn't I've no idea where to find the popover so I can set its delegate to my view controller.
Not sure which method you're referring to as being deprecated but you can still use the
UIPopoverPresentationControllerDelegate
to achieve this. Something like:And then use the
method to handle its dismissal.
The
popoverControllerDidDismissPopover:
method has been replaced bypopoverPresentationControllerShouldDismissPopover:
becauseUIPopoverControllerDelegate
has been replaced by theUIPopoverPresentationControllerDelegate
.From your presenting view controller, conform to the new protocol and set the delegate for the popover presentation controller in
prepareForSegue:
:You can then use the delegate method to handle detection of the dismissal in the way that you were previously intending.