在附加的视图控制器中关闭 Popover segue
Posted
技术标签:
【中文标题】在附加的视图控制器中关闭 Popover segue【英文标题】:Dismiss Popover segue in the attached viewcontroller 【发布时间】:2014-09-13 00:51:13 【问题描述】:我有一个带有 UIViewController
的故事板,名为 EntryViewController
,它使用弹出框转接另一个名为 PopoverViewController
的 UIViewController
。在这方面一切正常,但在我的PopoverViewController
中,我创建了一个UIButton
来关闭弹出框,但无论我做什么,我都无法让它工作,所有在线教程都显示用户以编程方式创建了弹出框。
我尝试了以下方法:
- (IBAction)dismissPopover:(id)sender
[self dismissViewControllerAnimated:YES completion:nil];
//[self.parentViewController dismissViewControllerAnimated:YES completion:nil];
关于如何解决这个问题的任何建议还是我做错了?
【问题讨论】:
您是否尝试过在“dismissPopover”中进行 NSLog 或调试,以确保您的 UIButton 点击事件触发了这个? 是的,dismissPopover 正在执行。我已经用 NSLog 验证过了。 如果有人需要更多信息来帮助调试,我可以为您提供所需的任何信息。 【参考方案1】:您可以通过点击弹出框之外的区域来关闭弹出框。在您的 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
【讨论】:
以上是关于在附加的视图控制器中关闭 Popover segue的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Interface Builder 中关闭键盘,因为视图控制器不会显示 doneEditing: