如何使用单个按钮和单个操作方法显示/隐藏UIPopoverController

sma*_*nja 3 objective-c uipopovercontroller ios

以下方法与导航栏按钮相关联.按下按钮时,显示aUIPopoverController

- (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];


}
Run Code Online (Sandbox Code Playgroud)

我想要做的是在第二次按下按钮时隐藏弹出窗口:

  1. 点击 - 显示弹出窗口
  2. 单击 - 隐藏弹出框

我该怎么做?

Ash*_*lls 6

这应该做你想要的:

- (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;
    }
}
Run Code Online (Sandbox Code Playgroud)