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後設置的委託,將覆蓋委託設置這不起作用。所以,正確的做法是,先初始化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. 因爲它是一個UIPopoverController內的的UIImagePickerController,我需要聽的UIImagePickerController的辭退太,結合這兩種方法:

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

所以當UIPopoverController得到我現在可以檢測駁回。

相關問題