According to 2014 WWDC , within a 30-minute mark, the correct answer is:
- (void) tapButton:(id) sender { MyViewControllerClass * vc = [[MyViewControllerClass alloc] init]; vc.modalPresentationStyle = UIModalPresentationPopover; UIPopoverPresentationController * popOverController = vc.popoverPresentationController; [popOverController setDelegate:self]; popOverController.sourceView = sender; popOverController.sourceRect = ((UIButton*)sender).frame; popOverController.permittedArrowDirections = UIPopoverArrowDirectionUp; [self presentViewController:vc animated:YES completion:nil]; }
Please note that the accepted answer has some problems, such as:
- Do not set
modalPresentationStyle UIPopoverPresentationController * instead of UIViewController
source share