Items on your navigation bar will be automatically added to popoverViewController's passthroughViews. It happens after the popover shows up. So you need to clear passthroughViews after that.
And for iOS 8, we can get popoverController from UIViewController.popoverPresentationController, before that, we can get popoverController from UIStoryboardPopoverSegue.
In your view controller presents a view controller as popover.
var popoverController: UIPopoverController?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Before IOS8, we need to get reference of popOverController from UIStoryboardPopoverSegue
if (!self.respondsToSelector(Selector("popoverPresentationController"))) {
if let popoverController = (segue as? UIStoryboardPopoverSegue)?.popoverController {
let menuViewController = segue.destinationViewController as AIMSMenuTableViewController
menuViewController.popoverController = popoverController
}
}
}
In your view controller that is presented as popover.
var popoverController: UIPopoverController?
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// Set passthroughViews to nil make tapping other navigation bar button
// dismiss presenting popoverController
if (self.respondsToSelector(Selector("popoverPresentationController"))) {
self.popoverPresentationController?.passthroughViews = nil
} else {
// For iOS8-pre version, we need to pass popoverController reference from segue
self.popoverController?.passthroughViews = nil
}
}