无法从另一个类中关闭 UIPopover
Posted
技术标签:
【中文标题】无法从另一个类中关闭 UIPopover【英文标题】:Unable to dismiss a UIPopover from another class 【发布时间】:2013-06-29 15:41:34 【问题描述】:我有一个 iPad 应用,使用 XCode 4.6.3、ios 6.2、ARC 和 Storyboards 创建。
我在 SubViewData.m 中以编程方式创建了一个 UIPopover。
@property (strong, nonatomic) UIPopoverController *popover;
// make rectangle to attach popover
CGRect rectangle = CGRectMake( touchPoint.x, touchPoint.y, 110, 1); // 0 height puts arrow on exact touch point
// get addressability to storyboard ViewController
UIViewController *popoverMainView = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"menuView"];
popover = [[UIPopoverController alloc] initWithContentViewController:popoverMainView];
[popover presentPopoverFromRect:rectangle inView:self
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
当点击弹出窗口中的 UIButton 时,我在另一个类 (QuickAppointment.m) 中设置通知。我收到通知并从 CalendarViewController.m 发出此代码:
SubViewData *svd = [[SubViewData alloc] init];
[svd.popover dismissPopoverAnimated:YES];
什么都没有发生!我不明白为什么不......所以,我做错了什么?
【问题讨论】:
【参考方案1】:看看你正在写的代码:
SubViewData *svd = [[SubViewData alloc] init];
这会创建一个全新且不同的 SubViewData 实例,而不是显示弹出框的实例。
【讨论】:
我尝试将关闭代码放在 SubViewData.m 中,但也没有任何反应......要关闭的代码应该在哪里?以及如何在不创建新实例的情况下获取 SubViewData 实例? (我认为我的做法是正确的,但显然不是).. 由于我不知道您如何或添加什么到 SubViewData.m,所以我无能为力。至于获取正确的实例 - 你这样做的方式与获取任何实例的方式相同;通过传递对将调用它的方法的对象的引用。 我试过了(通过引用)......这就是我使用的:[SubViewData.popover dismissPopoverAnimated:YES];它不知道 popover 是什么...你能给我一个文档,我可以在其中阅读整个实例化的东西吗?我会非常非常感谢它。我正在为此苦苦挣扎…… 你确定这没有给你编译器警告吗?看起来您要的是类而不是对象的属性。您的 SubViewData 对象是否有一个名为popover
的属性?你把它设置为弹出框控制器了吗?
是的... SubViewData 有一个名为 popover 的对象(参见上面的原始问题),它被设置为 popover 控制器(相同的代码)。以上是关于无法从另一个类中关闭 UIPopover的主要内容,如果未能解决你的问题,请参考以下文章