我在UIPopoverController的内容中有一个按钮.此按钮运行名为myAction的方法.
MyAction有这种形式
- (void) myAction:(id)sender
所以,myAction收到调用者按钮的id.
现在,在这个方法中我想解雇UIPopoverController,但我唯一拥有的是调用者按钮的ID.请记住,该按钮位于UIPopoverController内.
有没有办法发现UIPopoverController的ID,给定我已经拥有的按钮ID?
谢谢.
很不幸的是,不行.至少,不在标准做法范围内.你可能能够在应答器堆栈中找到它,但它是一个黑客,它是错误的,它真的,非常混乱.
如果你想通过按下按钮来关闭一个弹出窗口,一些相关的地方应该保留对弹出窗口的引用.通常这将是酥料饼的所有者(未控制器显示内的酥料饼).按下按钮时,它可以向所有者控制器发送消息,然后可以解除弹出窗口.
您可能很想让控制器显示在popover内部是它自己的popover的所有者,但是这种方式编码很脆弱,可能会变得混乱(再次),并且可能导致保留循环,以便既不会释放.
您可以通过使用KVC访问"popoverController"来访问呈现的popoverController.
[[self valueForKey:@"popoverController"] dismissPopoverAnimated:YES]