iOS как закрыть поповер кнопкой - PullRequest
0 голосов
/ 14 февраля 2012

на iOS, как я могу закрыть popover с помощью кнопки в popover. Я вызываю viewController в popover, но не могу закрыть popover, не увольняется. Как я могу это сделать Пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012

Мне обычно приходится создавать кнопки, которые действуют как переключатели для изменения видимости поповера.Вот как я всегда их связывал.Действие для моей кнопки выглядит так:

- (void)popoverButtonTapped:(id)button
{
    if (self.popover != nil)
    {
        // If the popover is open, close it
        [self.popover dismissPopoverAnimated:YES];
        self.popover = nil;
    }
    else
    {
        // Otherwise, open a new popover
        self.popover = ...;
        // This is important because you want to know if the popover was closed
        // by tapping outside it or some external event
        self.popover.delegate = self;
    } 
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    if (popoverController == self.popover)
    {
        // nil out our reference since the popover was dismissed
        self.popover = nil;
    }
}
0 голосов
/ 14 февраля 2012

Вы можете использовать навигационный контроллер и кнопку на панели сверху.Вставьте второй контроллер вида в контроллер навигации.Добавьте элемент кнопки панели и передайте его действие методу, который отклонит ваш поповер контроллер в первом контроллере представления.Возможно, вы можете использовать следующий код:

Поскольку вы создаете UIPopoverController, я предполагаю, что вы уже добавили UIPopoverConterollerDelegate в файл .h вашего первого контроллера представления.

ОбъявитеUIPopoverController *popover; в файле .h вашего первого контроллера представления.

напишите следующие коды, где вы создаете контроллер popover.

-(IBAction)createPopoverController
{
    SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    UIBarButtonItem *dismissButton = [[UIBarButtonItem alloc] initWithTitle:@"Dismiss" style:UIBarButtonItemStyleBordered target:self action:@selector(dismissButtonPressed:)];

    [secondViewController.navigationItem setRightBarButtonItem:dismissButton];

    UINavigationController* navC = [[UINavigationController alloc] initWithRootViewController:secondViewController];
    popover = [[UIPopoverController alloc] initWithContentViewController:navC];
    popover.delegate = self;
    [popover setPopoverContentSize:CGSizeMake(secondViewController.view.frame.size.width, secondViewController.view.frame.size.height) animated:YES];
    [popover presentPopoverFromRect:yourButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    [secondViewController release];
}

-(void)dismissButtonPressed:(id)sender
{
    [popover dismissPopoverAnimated:YES];
}

Надеюсь, это поможет вам.:)

0 голосов
/ 14 февраля 2012

Просто используйте это:

- (void)dismissPopOver
{
    [self.popOver dismissPopoverAnimated:YES];
    self.popOver = nil;
}

И вызовите этот метод при нажатии кнопки.

...