Hide and showing popovers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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