如何观察 UIPopoverController 何时被解雇?
Posted
技术标签:
【中文标题】如何观察 UIPopoverController 何时被解雇?【英文标题】:How can I observe when UIPopoverController is dismissed? 【发布时间】:2012-08-21 17:13:52 【问题描述】:UISplitViewController
有委托方法:
-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController
我希望从类似但不存在的委托方法中获取功能:
-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willDismissViewController:(UIViewController *)aViewController
考虑到UISplitViewController
/UIPopoverController
/UIKit
通常不符合 KVO 标准,因此我无法向UIPopoverController
的isPopoverVisible
属性添加观察者。
谢谢
答案:
//Sent when switching to portrait
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc
...
self.popoverController = pc;
[self.popoverController setDelegate:self];
-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController
NSLog(@"SHOWING POPOVER");
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
NSLog(@"HIDING POPOVER");
【问题讨论】:
【参考方案1】:想通了,在UISplitViewControllerDelegate
之外添加UIPopoverController
委托:
//Sent when switching to portrait
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc
...
self.popoverController = pc;
[self.popoverController setDelegate:self];
-(void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController
NSLog(@"SHOWING POPOVER");
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
NSLog(@"HIDING POPOVER");
【讨论】:
【参考方案2】:当您收到第一个委托通知时,您会收到一个对 UIPopoverController 的引用,该控制器将显示隐藏的视图控制器。注册为其委托,然后使用 UIPopoverControllerDelegate 协议中的 -popoverControllerDidDismissPopover:
委托方法。
【讨论】:
我的荣幸 :) 如果您愿意,您可以发布自己的代码解决方案(现在在您的问题中)作为您自己问题的答案,然后接受它 - 浏览页面的人可能更有可能在“答案”部分看到它,尤其是带有绿色的“已接受”复选标记。以上是关于如何观察 UIPopoverController 何时被解雇?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIPopoverController 上创建按钮 [关闭]
UIPopoverController,如何改变它的大小呢?
如何删除 UIPopoverController 中的“模糊”阴影