我有一个弹出窗口。当此弹出窗口被消除时,我想得到通知。
有什么办法吗?
答案非常简单!
只要关闭弹出窗口,就会为您调用委托例程popoverControllerDidDismissPopover。
所以只需将此代码添加到您的代码中...
-(void)popoverControllerDidDismissPopover:
(UIPopoverController *)popoverController
{
NSLog(@"a popover was dismissed! thank you stackoverflow!");
}
好吗?如果您确实想防止将其关闭,也可以使用popoverControllerShouldDismissPopover。
((注意-在不寻常的情况下,您使用多个弹出窗口,只需在该例程中检查正在释放的弹出窗口即可。例如,如果[popoverController == myPostcodePopover) { }
或其他内容。]
如果您不知道如何做,则解决方案几乎总是在您正在使用的类的可用委托中。
-----------别忘了这样做!
[无论何时使用任何委托,当然都必须将委托设置为“您”,
zipcodeEntryPopover.delegate = self;
-----------别忘了这样做!
[如果要使用这样的委托,则只需将其添加到在.h文件中声明该类的委托声明中。
因此,在您的.h文件中,您将看到类似这样的内容,
@interface yourHappyThing : UIViewController <ASIHTTPRequestDelegate,
UIAccelerometerDelegate,
thisDelegate,
thatDelegate>
((通常,其中有大量的系统代理和您自己创建的代理。)因此,您只需要为弹出式代理添加一个,因此...
@interface yourHappyThing : UIViewController <ASIHTTPRequestDelegate,
UIAccelerometerDelegate,
thisDelegate,
thatDelegate,
UIPopoverControllerDelegate>
应该这样做!
[就像其他人说的那样,使用-(void)popoverControllerDidDismissPopover: (UIPopoverController *)popoverController
,但是他们都错过了一个关键点;创建它时,不要忘记更改UIPopoverController的委托:
UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:datePicker];
popoverController.delegate = self;
使用此委托方法
-(void)popoverControllerDidDismissPopover:
(UIPopoverController *)popoverController
{
}