开发者

Dismissing iPad UIPopoverController from within its content controller

开发者 https://www.devze.com 2022-12-27 11:49 出处:网络
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 popo

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?


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.


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.


I think I answered just a similar question with the solution I used to dismiss a popover with a UIView loaded from a MKMapView. The use of my solution is basically the same as for any other view loading a popover.

Have a look at: How to dismissPopoverAnimated on iPad with UIPopoverController in MKMapView (SDK3.2). I hope that solved your problem.


use NSNotificationCenter To DissmissPoperController Fro Father viewControll

0

精彩评论

暂无评论...
验证码 换一张
取 消