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 s开发者_如何学Gotays.
So my question is: is there any simple way from within the loginViewController to remove its PopoverController container (without using delegate or notifications)?
Yes, your loginViewController
should keep a reference to the popover. Then you can use the dismissPopoverAnimated:
method of your popover itself to remove it.
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];
精彩评论