target-c несколько popoverviewcontroller - PullRequest
1 голос
/ 22 июня 2011

У меня есть несколько popovercontroller в UIView. Я могу вызвать метод popoverControllerDidDismissPopover для одного поповера, но не могу сделать то же самое для всех контроллеров popover.

Кто-нибудь может мне подсказать, как мне этого добиться?

1 Ответ

0 голосов
/ 22 июня 2011

Что вы имеете в виду, что вы можете позвонить?Вы подкласс UIPopoverController и сами вызывали метод?

Если вы имеете в виду «он не вызывается, когда мои всплывающие окна отклоняются», нам нужна дополнительная информация.Это определенное поведение в некоторых обстоятельствах.Позвольте мне процитировать из документов:

Контроллер всплывающих окон не вызывает этот метод в ответ на программные вызовы метода dismissPopoverAnimated:.Если вы закрыли поповер программно, вы должны выполнить любые действия по очистке сразу после вызова метода dismissPopoverAnimated:.

Если у вас несколько всплывающих окон и вы хотите узнать, какой из них только что был удален, вынужно сделать сравнение в самом методе.

РЕДАКТИРОВАТЬ на основе вашего комментария:

Метод всегда называется popoverControllerDidDismissPopover:(UIPopoverController *)popoverController.Этот метод вызывается любым всплывающим окном, которое отклонено пользователем.Если у вас есть два разных всплывающих окна, которые требуют разной финализации, вы должны различать их в этом методе.Вот почему у него есть параметр, в котором поповеры ставят self, указатель на себя.

Ваш метод должен выглядеть следующим образом:

popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    if (popoverController == myFirstPopoverController)
    {
        //do something
    }

    if (popoverController == mySecondPopoverController)
    {
        //do something else
    }
}
...