Как показать/скрыть UIPopoverController с помощью одной кнопки с одним методом действия

Следующий метод связан с кнопкой панели навигации. При нажатии кнопки отображается 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];


}

Что я хочу сделать, так это скрыть всплывающее окно при нажатии кнопки во второй раз:

  1. Нажмите - показать всплывающее окно
  2. Нажмите - скрыть всплывающее окно

Как мне это сделать?


person smartsanja    schedule 12.01.2012    source источник


Ответы (1)


Это должно делать то, что вы хотите:

- (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;
    }
}
person Ashley Mills    schedule 12.01.2012