2

我使用 ios5、Xcode 4、iPad 进行项目。

我的主视图中的标准按钮触发了一个弹出框。我已经在情节提要中设置了弹出框,并带有锚定到标准按钮的 segue。

UIPopoverControllerDelegate 是我的主视图控制器

 @interface ViewController : UIViewController <UIPopoverControllerDelegate>

当我在弹出窗口中选择一行时,我想

  • 关闭弹出框并
  • 调用 UIPopoverControllerDelegate 方法 popoverControllerDidDismissPopover。

这是我的弹出框的表视图委托中的代码:

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

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

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

     [popoverController.delegate popoverControllerDidDismissPopover];

如果未注释此行,我会收到编译器错误:“选择器 popoverControllerDidDismissPopover 没有已知的实例方法”。使用以下代码在主视图控制器中设置弹出框委托:

- (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];
     }
 }

有什么帮助吗?

谢谢你。

4

1 回答 1

5

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

[popoverController.delegate popoverControllerDidDismissPopover:popoverController];

你有什么特别的理由要这样称呼吗?我相信当您关闭弹出框时应该为您调用它。

于 2012-07-23T20:27:46.640 回答