从popover调用委托方法

时间:2012-07-21 15:52:12

标签: ipad ios5 popover

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

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

UIPopoverControllerDelegate是我的主视图控制器

 @interface ViewController : UIViewController <UIPopoverControllerDelegate>

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

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

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

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

没有最后一行,一切正常,包括行选择和解散。

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

     [popoverController.delegate popoverControllerDidDismissPopover];

如果此行未被注释,则会出现编译器错误:“没有已知的选择器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];
     }
 }

任何帮助?

谢谢。

1 个答案:

答案 0 :(得分:5)

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

[popoverController.delegate popoverControllerDidDismissPopover:popoverController];

你有什么特别的理由要打电话吗?我相信当你解雇popover时应该给你这个。