使用 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" 类型