2010-11-01 51 views
1

我有一个弹出视图。当这个popover被解雇时,我想要得到通知。Popover查看通知

有没有办法做到这一点?

请帮我一把。

回答

6

答案非常简单!

每当popover被解散时,都会调用委托例程popoverControllerDidDismissPopover。

所以才将此代码添加到您的代码......

-(void)popoverControllerDidDismissPopover: 
     (UIPopoverController *)popoverController 
    { 
    NSLog(@"a popover was dismissed! thank you stackoverflow!"); 
    } 

OK?如果你真的想阻止它被解雇,你也可以使用popoverControllerShouldDismissPopover。 (注意 - 在不寻常的情况下,你正在使用多个popover,只需在那个例程中检查它正在被解散的那个例子,例如,如果(popoverController == myPostcodePopover){}或其他。 )

如果您不知道该怎么做,该解决方案几乎总是存在于您正在使用的课程的代理中。

-----------别忘了这样做!

每当你使用任何委托,当然你必须设置委托是“你”,

zipcodeEntryPopover.delegate = self; 

-----------不要忘了这样做!

如果您打算使用这样的委托,您只需将它添加到您在.h文件中声明该类的委托声明中即可。

所以,在你的.h文件中,你将有这样的事情,

@interface yourHappyThing : UIViewController <ASIHTTPRequestDelegate, 
        UIAccelerometerDelegate, 
        thisDelegate, 
        thatDelegate> 

(通常你在那里有大量的人,无论是系统的代表和你自己,你已经创建了)。所以,你只需要添加一个为popover代表,因此...

@interface yourHappyThing : UIViewController <ASIHTTPRequestDelegate, 
        UIAccelerometerDelegate, 
        thisDelegate, 
        thatDelegate, 
        UIPopoverControllerDelegate> 

这应该做到这一点!如果它不起作用,我总是乐意帮助一个bar girl女孩,所以请进一步提问!

+0

嗨thnk你我粘贴上述code..it多年平均值得到所谓的reply..when ......我失去了什么 – user198725878 2010-11-01 06:52:12

+0

嗨...感谢您的帮助...... – user198725878 2010-11-01 07:59:00

+0

+1 for *注意 - 在不寻常的情况下,您正在使用多个popover *,这真的很难调试,尤其是当您将自己的控制器分为3个级别决定在稍后的阶段添加一些弹出... – mvds 2011-01-06 00:59:22

0

使用该委托的方法

-(void)popoverControllerDidDismissPopover: 
    (UIPopoverController *)popoverController 
{ 

} 
3

像其他人所说,使用-(void)popoverControllerDidDismissPopover: (UIPopoverController *)popoverController但他们都错过了一个临界点;不要忘记,当您创建它改变UIPopoverController的代表:

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:datePicker]; 
popoverController.delegate = self; 
+0

我错过了这一行,因为你提到“popoverController.delegate = self;”...谢谢你 – user198725878 2010-11-01 07:58:21