We have common views that we use in our application in many locations inside of UINavigationControllers
. Occasionally the UINavigationController
s are inside of popover views. Now the views we put into the nav controllers modify their navigation controller's toolbar buttons and, in some cases, use custom buttons that we've created. We need to be able to figure out from the UIViewcontroller
itself if the view is inside of a popoverview so we can display the correctly colored buttons.
We can easily get the Navigation controller reference from the UIViewController, using UIViewController.navigationController
, but there doesn't seem to be anything for finding a UIPopoverController
.
Does anyone have any good ideas for how to do this?
Thanks!
As Artem said we have UIPopoverPresentationController
since iOS8. To determine if view is in popover you can use its .arrowDirection
property for example.
Check it in viewWillApear()
of presented view controller:
// get it from parent NavigationController
UIPopoverPresentationController* popoverPresentationVC = self.parentViewController.popoverPresentationController;
if (UIPopoverArrowDirectionUnknown > popoverPresentationVC.arrowDirection) {
// presented as popover
} else {
// presented as modal view controller (on iPhone)
}