Hide and showing popovers
// Temporarily hide a popover | |
- (void)hidePopover:(NSNotification *)notification { | |
self.hiddenPopoverContent = nil; | |
if (self.hiddenPopoverController) { | |
// Save some details of the current state | |
// Holding on to the content view means we can go back to the same state | |
self.hiddenPopoverContent = [self.hiddenPopoverController contentViewController]; | |
self.hiddenPopoverContentSize = [self.hiddenPopoverController popoverContentSize]; | |
id <UIPopoverControllerDelegate> popoverDelegate = [self.hiddenPopoverController delegate]; | |
self.hiddenPopoverDelegate = popoverDelegate; | |
[self.hiddenPopoverController dismissPopoverAnimated:YES]; | |
self.hiddenPopoverHidingInProgress = YES; | |
if (popoverDelegate) { | |
[popoverDelegate popoverControllerDidDismissPopover:self.hiddenPopoverController]; | |
} | |
self.hiddenPopoverHidingInProgress = NO; | |
self.hiddenPopoverController = nil; | |
} | |
} | |
// Show a popover that had previously been hidden | |
- (void)showPopover:(NSNotification *)notification { | |
if (self.hiddenPopoverContent) { | |
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:self.hiddenPopoverContent]; | |
if ([popover respondsToSelector:@selector(popoverBackgroundViewClass)]) { | |
[popover setPopoverBackgroundViewClass:[ZingPopoverBackgroundView class]]; | |
} | |
CGSize popSize = self.hiddenPopoverContentSize; | |
[popover setPopoverContentSize:popSize animated:YES]; | |
[popover setDelegate:self.hiddenPopoverDelegate]; | |
if (self.hiddenPopoverPresentingButton) { | |
[popover presentPopoverFromBarButtonItem:self.hiddenPopoverPresentingButton permittedArrowDirections:self.hiddenPopoverArrowDirection animated:self.hiddenPopoverAnimated]; | |
} else { | |
[popover presentPopoverFromRect:self.hiddenPopoverPresentingRect inView:[self view] permittedArrowDirections:self.hiddenPopoverArrowDirection animated:self.hiddenPopoverAnimated]; | |
} | |
self.hiddenPopoverController = popover; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment