Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dismissing iPad UIPopoverController from within its content controller

So I have a popover with a button in it. When that button is pushed, I want the popover to go away. It seems easy enough, but I can't figure it out for the life of me. The code I use to show the popover is below:

    AddCategoryViewController* content = [[AddCategoryViewController alloc] init];
 UIPopoverController* aPopover = [[UIPopoverController alloc]
          initWithContentViewController:content];
 aPopover.delegate = self;
 [content release];

 // Store the popover in a custom property for later use.
 self.addCategoryPopover = aPopover;
 [aPopover release];
 [addCategoryPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

Within the addcategoryviewcontroller, I have:

    -(IBAction)saveAddCategory:(id)sender {
 if (rootViewController == nil)
  rootViewController = [[RootViewController alloc] init];

 [rootViewController.addCategoryPopover dismissPopoverAnimated:YES];
 [rootViewController dismissPopover];
}

Rootviewcontroller is where the popover is being created from. Unfortunately, neither of those methods work to dismiss it. any help?

like image 557
joshholat Avatar asked Apr 17 '10 21:04

joshholat


2 Answers

You would be seeing a warning at this line.

 aPopover.delegate = self;

and if you would execute your code. The app would crash. Instead you need to do it like this.

like image 96
Madhup Singh Yadav Avatar answered Oct 21 '22 11:10

Madhup Singh Yadav


I have

- (void)viewWillDisappear:(BOOL)anAnimated
{
    [self.dPopover dismissPopoverAnimated: NO];
    self.dPopover = nil;
    [super viewWillDisappear: anAnimated];
}

and don't see why this wouldn't work in your case.

Your if is a bit troubling, so my guess is you aren't talking to the view you think you are. rootViewController.addCategoryPopover is probably nil, because you made a new controller.

like image 43
David Dunham Avatar answered Oct 21 '22 11:10

David Dunham