Answering my own question to help some one,
// Presenting from BarButton will not dismiss popover when we click on other bar button.
// [self.popoverController presentPopoverFromBarButtonItem:self.barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
NSMutableArray* buttons = [[NSMutableArray alloc] init];
for (UIView *subview in self.navigationController.navigationBar.subviews) {
if ([subview isKindOfClass:[UIControl class]]) {
[buttons addObject:subview];
}
}
UIView *view = [buttons objectAtIndex:1]; // The '1' is the index to your bar item in the array of .items
CGRect barButtonFrame = [self.navigationController.navigationBar convertRect:view.frame toView:self.navigationController.view];
[self.popoverController presentPopoverFromRect:barButtonFrame inView:self.navigationController.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
What I did above is find the frame of bar button and show popover "presentPopoverFromRect".