我指定了popover对象o它的contentViewController,我把dismiss代码放在一个位于内容视图控制器中的按钮中。
按下按钮时:
[self.popover dismissPopoverAnimated:YES];
被调用并且popover被解雇。 但是,不会自动调用委托的方法。我以为我没有设置它的代表,但它就在那里。如果我在dismissPopoverAnimated行之后添加以下行,则正确调用delegate ...
[self.popover.delegate popoverControllerDidDismissPopover:self.popover];
我不明白为什么它不会“自动”调用委托的方法。 怎么会发生这种情况?
答案 0 :(得分:16)
当使用'dismissPopoverAnimated:'时,不会调用委托中的popoverControllerDidDismissPopover:
。
来自popoverControllerDidDismissPopover:
中UIPopoverControllerDelegate
的{{3}}:
弹出控制器不会调用此方法来响应对dismissPopoverAnimated:方法的编程调用。如果以编程方式关闭popover,则应在调用dismissPopoverAnimated:方法后立即执行任何清理操作。
答案 1 :(得分:4)
有两种方法可以解雇弹出窗口。 (a)在弹道外攻击; (b)以编程方式进行
[self.popover dismissPopoverAnimated:YES];
弹出控制器不会响应此方法调用此方法 程序调用dismissPopoverAnimated:方法。如果你 以编程方式关闭popover,您应该执行任何清理 调用dismissPopoverAnimated:方法后立即执行操作。
因此,不自动调用委托是正常的行为,你正在做的事情(自己调用)很好。
答案 2 :(得分:0)
popdiControllerDidDismissPopover不会在Dismiss上调用,但是当你在popoverController内容视图外面点击它时会调用它。