I get the following crash when I open a popover by clicking on a button element on the main controller and then rotating the view.
"NSGenericException: UIPopoverPresentationController should have a non-nil sourceView or barButtonItem set before the presentation occurs."
I looked at a similar crash here - Crash in the UIActivityViewController on iPads iOS8 , but I do not use the “UIPopoverPresentationController” anywhere in my code.
My main controller is a UIViewController and has a barbuttonitem, which when clicked opens a popover like another controller, which is a UITableViewController (class DisplayTableViewController). Below is the code:
In my main controller in the user method say "createPopover" I have:
- (void)createPopover
{
self.tableViewController = [[DisplayTableViewController alloc] init];
self.tableViewController.someDelegate = self;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.tableViewController];
self.navBarButtonItemPopoverController = [[UIPopoverController alloc] initWithContentViewController:navigationController];
self.navBarButtonItemPopoverController.delegate = self;
[self displayPopover:self.myBarButton];
}
- (void)displayPopover:(id)sender
{
[self.navBarButtonItemPopoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
, . :
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
if ([self.navBarButtonItemPopoverController isPopoverVisible])
{
[self.navBarButtonItemPopoverController dismissPopoverAnimated:NO];
[self performSelector:@selector(displayPopover:) withObject:self.myBarButton afterDelay:0.0];
}
}
. createPopover :
self.tableViewController.popoverPresentationController.sourceView = [self view];
. "self.tableViewController.popoverPresentationController" "self.popoverPresentationController" , . , "" displayPopover , .. .
, popoverPresentationController ?