【发布时间】:2014-01-12 14:38:55
【问题描述】:
我将弹出框对象分配给它的 contentViewController,然后我将关闭代码放在位于内容视图控制器中的按钮中。
按下按钮时:
[self.popover dismissPopoverAnimated:YES];
被调用并且 popover 被解除。 但是,委托的方法不会自动调用。我以为我没有设置它的代表,但它就在那里。如果我在dismissPopoverAnimated 行之后添加以下行,则正确调用了委托...
[self.popover.delegate popoverControllerDidDismissPopover:self.popover];
我不明白为什么它不“自动”调用委托的方法。 怎么会这样?
【问题讨论】:
-
我假设你在谈论协议的代表?这就是它的工作原理。当您希望为您的委托执行协议中定义的方法时,您需要使用 [delegate protocolMethod] 显式告诉您的委托执行此操作;在您希望方法执行的位置。想象一下,如果您的协议中有 10 种方法。在那种情况下,您不希望您的委托执行所有 10 种方法,对吧?所以它不能只猜测你想调用哪个方法,即使只定义了一个方法。
-
通常情况下,使用dismissPopoverAnimated 方法会在popover 关闭后自动调用popoverControllerDidDismissPopover 方法。这就是 UIPopoverController 让我们现在关于解雇的方式。
标签: ios objective-c delegates uipopovercontroller