在附加的viewcontroller中关闭Popover segue

时间:2014-09-13 00:51:14

标签: ios objective-c ipad

我有一个名为UIViewController EntryViewController的故事板,它使用一个名为UIViewController的另一个PopoverViewController的popover segue。一切都在这方面完美无缺,但在我的PopoverViewController内部,我创建了一个UIButton来解除popover,但无论我做什么,我都无法让它工作,所有教程在线显示用户以编程方式创建了popover。

我尝试了以下内容:

- (IBAction)dismissPopover:(id)sender {
  [self dismissViewControllerAnimated:YES completion:nil];
  //[self.parentViewController dismissViewControllerAnimated:YES completion:nil];
}

有关如何解决这个问题的建议,还是我做错了?

1 个答案:

答案 0 :(得分:0)

您可以通过点击弹出窗口外的区域来关闭弹出窗口。在您的PopoverViewController中定义一个属性,该属性包含对segue的popOverController的引用。在根控制器的prepareForSegue方法中,设置上面提到的属性。然后,您可以使用该属性来关闭PopoverViewController。

在PopoverViewController.h文件中定义一个属性:

@property (nonatomic, strong) UIPopoverController *popOverController;

- (IBAction)dismissPopover:(id)sender {
   [self.popOverController dismissPopoverAnimated:YES];
}

在EntryViewController的prepareForSegue方法中:

- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender {
    if([segue.identifier isEqualToString: @"ShowPopOver"]) {
        if( [segue isKindOfClass: [UIStoryboardPopoverSegue class]] ){
        PopOverViewController *controller = (PopOverViewController*)segue.destinationViewController;
        controller.popOverController = [(UIStoryboardPopoverSegue *)segue popoverController];
    }
}

您也可以下载sample example