0

Я пытаюсь обнаружить, когда UIPopoverController отклоняется, но, похоже, он не работает должным образом, методы не вызываются. Это мой код для представления UIPopoverController:UIPopoverController не запускает методы делегирования

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imagePickerController.delegate = self; 
UIPopoverController *popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController]; 
popoverVC.delegate = self; 
[popoverVC presentPopoverFromRect:CGRectMake(self.frame.origin.x,self.frame.origin.y, self.frame.size.width, self.frame.size.height) inView:[home view] permittedArrowDirections:0 animated:YES]; 

Я пытаюсь стрелять этот метод, но не вызывался:

- (void) popoverControllerDidDismissPopover:(UIPopoverController *) popoverController; 

И я действительно добавление делегата в заголовок:

@interface Map : UIView <UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIGestureRecognizerDelegate, UIScrollViewDelegate,UIPopoverControllerDelegate> 

Я не знаю, чего я упускаю, не работает вообще.

ответ

0

Возможно, вы уже решили это, но я столкнулся с той же проблемой. Я держу экземпляр UIPopoverController в моем ViewController и был это так:

self.popover.delegate = self; 
self.popover = [[UIPopoverController alloc] initWithContentViewController:wgtvc]; 

, конечно, это не работает, потому что я инициализация UIPopoverController ПОСЛЕ установки делегата, который переопределяет параметр делегата. Таким образом, правильный путь к FIRST инициализации UIPopovercontroller и затем установить делегат

self.popover = [[UIPopoverController alloc] initWithContentViewController:wgtvc]; 
self.popover.delegate = self; 

Может быть, вы переинициализацией вашего UIPopoverController где-то - просто установить делегат снова после повторной инициализации.

Hpoe это помогает.

+1

Спасибо, я понял, как заставить его работать, я отправляю его как ответ, это комбинация этого с другими вещами. –

0

Итак, я понял, как заставить его работать.

  1. Я сделал «глобальную» переменную для класса.

    self.popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController]; 
    self.popoverVC.delegate = self; 
    
  2. Потому что это UIImagePickerController внутри UIPopoverController, мне нужно слушать UIImagePickerController для роспуск тоже и сочетать оба метода:

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; 
    - (void) popoverControllerDidDismissPopover:(UIPopoverController *) popoverController 
    

Так что я теперь могу определить, когда UIPopoverController получает уволен.

Смежные вопросы