2010-11-01 29 views

Répondre

6

La réponse est incroyablement simple!

La routine de délégué popoverControllerDidDismissPopover est appelée pour vous chaque fois que le popover est fermé.

Donc, il suffit d'ajouter ce code à votre code ...

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

OK? Vous pouvez également utiliser popoverControllerShouldDismissPopover si vous voulez réellement l'empêcher d'être rejeté.

(Remarque - Dans le cas inhabituel où vous travaillez avec plus d'un popover, vérifiez dans cette routine quel est celui qui est rejeté, par exemple si (popoverController == myPostcodePopover) {}, ou autre.

Si vous ne savez pas comment faire quelque chose, la solution est presque toujours dans les délégués disponibles avec la classe avec laquelle vous travaillez.

----------- ne pas oublier de le faire!

Chaque fois que vous utilisez un délégué, bien sûr, vous devez définir le délégué à être « vous »,

zipcodeEntryPopover.delegate = self; 

----------- ne pas oublier de le faire!

Si vous allez utiliser un délégué comme celui-ci, vous avez juste besoin de l'ajouter à vos déclarations de délégué où vous déclarez la classe dans votre fichier .h.

Ainsi, dans votre fichier .h que vous aurez quelque chose comme ça,

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

(Souvent, vous avez un grand nombre d'entre eux là-bas, les deux délégués du système et de votre propre que vous avez créé.) Donc, , il vous suffit d'ajouter l'un pour le délégué popover, donc ...

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

cela devrait le faire! Si cela ne fonctionne pas, je suis toujours heureux d'aider une fille barbie alors s'il vous plaît demander quelque chose plus loin!

+0

Salut vous thnk pour le reply..when i collé ci-dessus code..it doesnot s'appelle ... suis-je manque quelque chose – user198725878

+0

Salut .. merci beaucoup pour votre aide ... – user198725878

+0

+1 pour * Note - dans le cas inhabituel, vous travaillez avec plus d'un popover *, c'est vraiment difficile à déboguer en particulier lorsque vous sous-classez vos propres contrôleurs dans 3 niveaux et décidez d'ajouter quelques popovers à un stade ultérieur ... – mvds

0

utiliser cette méthode déléguée

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

} 
3

Comme les autres ont dit, utiliser -(void)popoverControllerDidDismissPopover: (UIPopoverController *)popoverController Mais ils ont tous manqué un point critique; ne pas oublier de changer le délégué du UIPopoverController lors de sa création:

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

J'ai raté cette ligne comme vous l'avez mentionné "popoverController.delegate = self;" ... merci – user198725878