Domanda

Ho una vista pop. Quando questo popover viene licenziato, voglio essere informato.

C'è modo di farlo?

Per favore aiutatemi.

È stato utile?

Soluzione

La risposta è incredibilmente semplice!

Il delegato di routine popoloverdiddiddismisspopover è chiamato per te ogni volta che il popover viene licenziato.

Quindi aggiungi questo codice al tuo codice ...

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

OK? Puoi anche usare PopoverControllershouldDismissPopover se si desidera effettivamente impedire che venga licenziato.

(Nota - Nel caso insolito stai lavorando con più di un popover, basta controllare all'interno di quella routine quale viene licenziato. Quindi ad esempio se (popoloverController == mypostcodepopover) {} o qualsiasi altra cosa.)

Se non sai come fare qualcosa, la soluzione è quasi sempre nei delegati disponibili con la classe con cui stai lavorando.

----------- Non dimenticare di farlo!

Ogni volta che usi un delegato, ovviamente devi impostare il delegato per essere "tu",

zipcodeEntryPopover.delegate = self;

----------- Non dimenticare di farlo!

Se hai intenzione di utilizzare un delegato del genere, devi solo aggiungerlo alle tue dichiarazioni delegate in cui dichiari la classe nel tuo file .h.

Quindi, nel tuo file .h avrai qualcosa di simile,

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

(Spesso ne hai un gran numero lì dentro, sia i delegati del sistema che il tuo che hai creato.) Quindi, devi solo aggiungere quello per il delegato di popover, quindi ...

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

Questo dovrebbe farlo! Se non funziona, sono sempre felice di aiutare una ragazza Barbie, quindi per favore chiedi altro!

Altri suggerimenti

Come hanno detto gli altri, usa -(void)popoverControllerDidDismissPopover: (UIPopoverController *)popoverController Ma tutti hanno perso un punto critico; Non dimenticare di cambiare il delegato di UipopoverController quando lo crei:

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

Usa questo metodo delegato

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top