How to show/hide UIPopoverController using a single button with a single action method

六月ゝ 毕业季﹏ 提交于 2019-12-10 17:52:59

问题


The following method is associated with a nav bar button. When the button is pressed, it shows a UIPopoverController

- (IBAction) showTablePopUp:(id) sender {

if (self.tablesPopoverController == nil) {

    TablesPopOverViewController *tables = [[TablesPopOverViewController alloc]initWithNibName:@"TablesPopOverViewController" bundle:[NSBundle mainBundle]]; 

    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:tables]; 

    popover.delegate = self;
    popover.popoverContentSize=CGSizeMake(280.0, 327.0);
    [tables release];

    self.tablesPopoverController = popover;
    [popover release];
}

[self.tablesPopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];


}

What I want to do is hiding the popover when the button is pressed the second time:

  1. Click - show popover
  2. Click - hide popover

How can I do it?


回答1:


This should do what you want:

- (IBAction) showTablePopUp:(id) sender {
    if (self.tablesPopoverController == nil) {

        TablesPopOverViewController *tables = [[TablesPopOverViewController alloc]initWithNibName:@"TablesPopOverViewController" bundle:[NSBundle mainBundle]]; 

        UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:tables]; 

        popover.delegate = self;
        popover.popoverContentSize=CGSizeMake(280.0, 327.0);
        [tables release];

        self.tablesPopoverController = popover;

        [self.tablesPopoverController presentPopoverFromBarButtonItem:sender 
            permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    } else {
        [self.tablesPopoverController dismissPopoverAnimated: YES];
        self.tablesPopeverController = nil;
    }
}


来源:https://stackoverflow.com/questions/8838154/how-to-show-hide-uipopovercontroller-using-a-single-button-with-a-single-action

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!