当前位置:  开发笔记 > IOS > 正文

ipad - 解雇UIPopoverController

如何解决《ipad-解雇UIPopoverController》经验,为你挑选了2个好方法。

我在UIPopoverController的内容中有一个按钮.此按钮运行名为myAction的方法.

MyAction有这种形式

- (void) myAction:(id)sender 

所以,myAction收到调用者按钮的id.

现在,在这个方法中我想解雇UIPopoverController,但我唯一拥有的是调用者按钮的ID.请记住,该按钮位于UIPopoverController内.

有没有办法发现UIPopoverController的ID,给定我已经拥有的按钮ID?

谢谢.



1> Ed Marty..:

很不幸的是,不行.至少,不在标准做法范围内.你可能能够在应答器堆栈中找到它,但它是一个黑客,它是错误的,它真的,非常混乱.

如果你想通过按下按钮来关闭一个弹出窗口,一些相关的地方应该保留对弹出窗口的引用.通常这将是酥料饼的所有者(控制器显示的酥料饼).按下按钮时,它可以向所有者控制器发送消息,然后可以解除弹出窗口.

您可能很想让控制器显示在popover内部是它自己的popover的所有者,但是这种方式编码很脆弱,可能会变得混乱(再次),并且可能导致保留循环,以便既不会释放.


第二段在这个答案中非常重要.请记住,根据iPad编程指南:"请注意,您有责任存储对弹出控制器的引用,以便您可以将其解除.系统默认情况下不提供." 因此,不要在其上执行"释放"(无论如何都会导致崩溃),直到父视图进入dealloc阶段.(这是我的安全方法).

2> JasonMing..:

您可以通过使用KVC访问"popoverController"来访问呈现的popoverController.

[[self valueForKey:@"popoverController"] dismissPopoverAnimated:YES]

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有