2011-01-02 20 views
9

Tengo varios uiPopoverControllers en mi aplicación universal para iPad. Ahora tengo un requisito para activar una función una vez que se ha descartado un cierto popover. Puedo hacer esto fácilmente si el usuario hace clic en "cerrar" dentro del popover, pero si tocan la pantalla para ocultar el popover, no puedo activar mi función.detectar ipad cuando se eliminan los UIPopoverControllers

He estado buscando en Google por un tiempo y parece que no puedo encontrar ningún método de delegado que pueda usar en mi controlador de vista principal para capturarlos. Me encantaría algo como didismissPopoverController, pero supongo que no está disponible.

Si no, supongo que lo único que se puede hacer es detectar los toques y disparar entonces? Básicamente, estoy destacando una fila UITableView y cargando el popover. Necesito anular la selección de la fila, así que quiero simplemente llamar a [tabla de recarga de datos].

Gracias por cualquier ayuda en este caso!

Respuesta

21

Debe asignar un delegado al UIPopoverController y luego implementar el método - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController. Por ejemplo:

@interface FooController : UIViewController <UIPopoverControllerDelegate> { 
    // ... 
} 
// ... 
@end 

Al crear una instancia del UIPopoverController (por ejemplo, para este ejemplo, en FooController) ...

UIPopoverController *popover = // ... 
popover.delegate = self; 

A continuación, sería aplicar el método:

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { 
    // do something now that it's been dismissed 
} 

De acuerdo, no he probado esto, pero parece que debería funcionar ...

Hope ¡esto ayuda!

4

Puede usar el método delegado popoverControllerDidDismissPopover después de la siguiente asignación: self.popoverController.delegate = self;

Tenga en cuenta que el método delegado popoverControllerDidDismissPopover no recibe una llamada si llama por programación [auto.popoverController dismissPopoverAnimated: YES].

+0

Esto es cierto, busque en la documentación: 'El controlador popover no llama a este método en respuesta a llamadas programáticas al método dismissPopoverAnimated :. Si descarta el popover mediante programación, debe realizar cualquier acción de limpieza inmediatamente después de llamar al método dismissPopoverAnimated:. –

Cuestiones relacionadas