使用 Storyboard Segues 关闭弹出视图

Posted

技术标签:

【中文标题】使用 Storyboard Segues 关闭弹出视图【英文标题】:Dismissing Popover View with Storyboard Segues 【发布时间】:2013-09-28 01:29:10 【问题描述】:

我一直在谷歌搜索和搜索堆栈交换中的正确答案,但我似乎找不到它。我所拥有的是通过弹出框 segue 呈现的弹出框视图,当在弹出框视图中单击按钮时,我希望将其关闭并显示 UIAlert。这是我到目前为止的代码,以及我从其他答案中收集到的但不起作用的代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

if ([segue.identifier isEqualToString:@"popOverSegue"]) 
    if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) 
        UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue;
        self.myPopoverController = popoverSegue.popoverController;
    




- (void)methodThatShouldCauseMyPopoverToCloseAnimated:(BOOL)animated

[self.myPopoverController dismissPopoverAnimated:animated];
NSLog(@"Dismissed");



-(IBAction)presentPopoverView:(id)sender 
if (!popOverViewIsShown)
    [self performSegueWithIdentifier:@"popOverSegue" sender:self];
    popOverViewIsShown = YES;
else 
    [self methodThatShouldCauseMyPopoverToCloseAnimated:YES];
    popOverViewIsShown = NO;




- (IBAction)logoutMethod:(id)sender 

[self methodThatShouldCauseMyPopoverToCloseAnimated:YES];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Logout"
                                                message:@"Are you sure?"
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"OK", nil];
alert.tag = 0;
[alert show];


我怀疑当我调用 methodThatShouldCauseMyPopoverToClose 时,myPopoverController 等于 nil。有什么建议么?非常感谢! :)

【问题讨论】:

【参考方案1】:

像这样将你的弹出框存储在你的 prepareForSegue 中,然后放置一个断点以确保该方法正在触发。

self.myPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];

【讨论】:

以上是关于使用 Storyboard Segues 关闭弹出视图的主要内容,如果未能解决你的问题,请参考以下文章

Xcode -(OC版)Storyboard教程 1.5:Segues的介绍

使用没有 Storyboard Segues 的 UIViewControllerAnimatedTransitioning

不使用 Storyboard segues 的自定义视图转换 (Swift)

Xcode 6 中 Mac OS 应用程序的 Storyboard segues

iOS Storyboard Presenting Segues "relationship, embed, push, modal, custom" 类型

为presentViewController设置委托(例如不使用segues)