iPad: how to close UIPopoverController from within the "popped" ViewController

Johann picture Johann · Mar 24, 2011 · Viewed 9.9k times · Source

I'm converting and iphone project to ipad. On iphone I have a mainViewController that opens a loginViewController using addSubView.

On the iPad I would like to display that loginViewController in a popover. so I did something like:

UIPopoverController *loginPop = [[UIPopoverController alloc] initWithContentViewController:loginViewController];
[loginPop presentPopoverFromRect:CGRectMake(150, 150, 90, 90) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:true];

This works fine. The problem is when the loginViewController finishes its "business". On the iPhone I just call a simple [self.view removeFromSuperview]; But on the ipad this causes the view to be removed from the PopoverController but the frame of the popup stays.

So my question is: is there any simple way from within the loginViewController to remove its PopoverController container (without using delegate or notifications)?

Answer

lxt picture lxt · Mar 24, 2011

Yes, your loginViewController should keep a reference to the popover. Then you can use the dismissPopoverAnimated: method of your popover itself to remove it.