Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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)?

like image 674
Johann Avatar asked Mar 24 '11 09:03

Johann


2 Answers

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

like image 81
lxt Avatar answered Oct 27 '22 00:10

lxt


Actually, I want to implement that, but I remembered that we can access application delegate, which in turn will have access to main view of it, In there, you can store property of the popover, and you can call the dismissPopoverAnimated.

Like this :

MyAppDelegate *app = (MyAppDelegate *) [[UIApplication sharedApplication] delegate];
MyViewController * myView =[app viewController];
[myView.popover dismissPopoverAnimated:YES];
like image 39
swdev Avatar answered Oct 26 '22 22:10

swdev