diff --git a/WYPopoverController/WYPopoverController.m b/WYPopoverController/WYPopoverController.m index 95b738b6..4974704b 100644 --- a/WYPopoverController/WYPopoverController.m +++ b/WYPopoverController/WYPopoverController.m @@ -198,6 +198,11 @@ + (void)load { swizzle = class_getInstanceMethod(self, @selector(sizzled_setViewControllers:animated:)); method_exchangeImplementations(original, swizzle); + + original = class_getInstanceMethod(self, @selector(popViewControllerAnimated:)); + swizzle = class_getInstanceMethod(self, @selector(sizzled_popViewControllerAnimated:)); + + method_exchangeImplementations(original, swizzle); } - (BOOL)wy_isEmbedInPopover { @@ -268,6 +273,34 @@ - (void)sizzled_pushViewController:(UIViewController *)aViewController animated: } } +-(void)sizzled_popViewControllerAnimated:(BOOL)animated +{ + if(self.viewControllers.count <= 1) + { + //Let the system handle the special case + [self sizzled_popViewControllerAnimated:animated]; + return; + } + + UIViewController *vc = [self.viewControllers objectAtIndex:self.viewControllers.count - 2]; + if (self.wy_isEmbedInPopover) { +#ifdef WY_BASE_SDK_7_ENABLED + if ([vc respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { + vc.edgesForExtendedLayout = UIRectEdgeNone; + } +#endif + CGSize contentSize = [self contentSize:vc]; + [self setContentSize:contentSize]; + } + + [self sizzled_popViewControllerAnimated:animated]; + + if (self.wy_isEmbedInPopover) { + CGSize contentSize = [self contentSize:vc]; + [self setContentSize:contentSize]; + } +} + - (void)sizzled_setViewControllers:(NSArray *)aViewControllers animated:(BOOL)aAnimated { NSUInteger count = [aViewControllers count];