如何解雇UIPopoverController?

Azi*_*lah 2 iphone objective-c ipad uipopovercontroller ios

我创建了一个UIPopoverController并将其添加到视图控制器时单击UIButton如下所示

- (void)viewDidLoad
{
    [super viewDidLoad];
    controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
    popoverController = [[UIPopoverController alloc] initWithContentViewController:controller];
}

- (IBAction)showPopover:(UIButton *)sender
{
    if ([popoverController isPopoverVisible]) {
        [popoverController dismissPopoverAnimated:YES];
    } else {
               CGRect popRect = CGRectMake(self.btnShowPopover.frame.origin.x,
                                self.btnShowPopover.frame.origin.y,
                                self.btnShowPopover.frame.size.width,
                                self.btnShowPopover.frame.size.height);
          [popoverController presentPopoverFromRect:popRect
                                       inView:self.view
                     permittedArrowDirections:UIPopoverArrowDirectionAny
                                     animated:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

btnShowPopoverUIButtonviewcontroller,popoverControllerUIPopoverController.

popovercontroller同时单击该按钮显示正常.

但它不会解雇当我点击UIButtonsecondviewcontroller

我使用了以下代码

-(IBAction)y:(id)sender{
    fs =  [[Firstviewcontroller alloc] initWithNibName:@"FIrstscreen" bundle:[NSBundle mainBundle]];
    [fs.popoverController dismissPopoverAnimated:TRUE];
}
Run Code Online (Sandbox Code Playgroud)

但它没有用.

popovercontroller单击添加到viewcontoller中的按钮时如何关闭popovercontroller

Mid*_* MP 9

您正在分配一个新实例Firstviewcontroller,因此它不会忽略前一个实例的弹出窗口.

当您显示popover时需要传递旧实例,如:

- (void)viewDidLoad
{
    [super viewDidLoad];
    controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
    popoverController = [[UIPopoverController alloc] initWithContentViewController:controller];
    [controller setFs:self]
}
Run Code Online (Sandbox Code Playgroud)

和解雇一样:

-(IBAction)y:(id)sender
{
    [fs.popoverController dismissPopoverAnimated:TRUE];
}
Run Code Online (Sandbox Code Playgroud)