我使用此代码来呈现嵌入了navcontroller的弹出窗口。据我所知,它在iOS 5-8上的工作原理完全相同。该代码是从NavBar中的按钮调用的,所以我不必担心在错误的时间设置它。我在#defines中设置了POPOVER_WIDTH和POPOVER_HEIGHT,因为我有几个popovers,我希望它们全都相同。
if (self.myPopoverController == nil) {
SettingsTableViewController *svc = [[SettingsTableViewController alloc]
initInManagedObjectContext:self.mObjContext
withScoreKeeper:self.scoreKeeper
withWordList:self.wordList];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:svc];
navController.delegate = self;
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navController];
popover.delegate = self;
popover.popoverContentSize = CGSizeMake(POPOVER_WIDTH, POPOVER_HEIGHT);
self.myPopoverController = popover;
[svc setPopover:popover];
// }
}
[self.myPopoverController presentPopoverFromBarButtonItem:buttonPressed permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];