我有一个名为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];
}
有关如何解决这个问题的建议,还是我做错了?
答案 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