从popover调用委托方法

bos*_*rol 2 popover ipad ios5

我使用ios5,Xcode 4,iPad开展项目.

我在主视图中使用标准按钮触发了弹出窗口.我在故事板中设置了popover,其中segue固定在标准按钮上.

UIPopoverControllerDelegate是我的主视图控制器

 @interface ViewController : UIViewController <UIPopoverControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

当我在popover中选择一行时我想要

  • 解雇popover和
  • 调用UIPopoverControllerDelegate方法popoverControllerDidDismissPopover.

这是我的popover的表视图委托中的代码:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath      *)indexPath {
     myKey = [myArray objectAtIndex:indexPath.row];
     [popoverController dismissPopoverAnimated:YES];
     // [popoverController.delegate popoverControllerDidDismissPopover];
Run Code Online (Sandbox Code Playgroud)

没有最后一行,所有工作正常,包括行选择和解散.

但我对最后一行代码感到困惑

     [popoverController.delegate popoverControllerDidDismissPopover];
Run Code Online (Sandbox Code Playgroud)

如果此行未注释,则会出现编译器错误:"没有已知的选择器popoverControllerDidDismissPopover实例方法".使用以下代码在主视图控制器中设置popover委托:

- (void) prepareForSegue:(UIStoryboardPopoverSegue *) segue sender:(id) sender {
     if ([[segue destinationViewController] isKindOfClass:[RGBViewController class]]) {
        RGBViewController* viewController = (RGBViewController*)[segue destinationViewController];
        UIStoryboardPopoverSegue* popoverSegue  = (UIStoryboardPopoverSegue*)segue;
        [viewController setPopoverController:[popoverSegue popoverController]];
        [[popoverSegue popoverController] setDelegate:self];
     }
 }
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

谢谢.

Jam*_*nio 5

您缺少该属性.您正在寻找的是:

[popoverController.delegate popoverControllerDidDismissPopover:popoverController];
Run Code Online (Sandbox Code Playgroud)

有什么特别的原因要你打电话吗?我相信当你解雇popover时应该为你调用.