ios objective-c delegates uipopovercontroller

ios - El delegado de UIPopoverController no recibe una llamada al despedirse



objective-c delegates (3)

Asigno el objeto popover o es contentViewController y pongo código de descarte en un botón que reside en el controlador de vista de contenido.

Cuando se presiona el botón:

[self.popover dismissPopoverAnimated:YES];

se llama y popover se descarta. Sin embargo, el método del delegado no se llama automáticamente. Pensé que no estaba configurando su delegado, pero está ahí. Si agrego la siguiente línea después de cerrar la línea PopoverAnimated, el delegado se llama correctamente ...

[self.popover.delegate popoverControllerDidDismissPopover:self.popover];

No entiendo por qué no llama "automáticamente" el método del delegado. ¿Cómo puede pasar esto?


Hay dos formas de descartar un popover. (a) tocando fuera del popover; y (b) hacerlo programáticamente con

[self.popover dismissPopoverAnimated:YES];

Si lo hace mediante programación, entonces los documentos ( https://developer.apple.com/library/ios/documentation/uikit/reference/UIPopoverControllerDelegate_protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIPopoverControllerDelegate/popoverControllerDidDismissPopover : ) decir:

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 :.

Por lo tanto, no llamar al delegado automáticamente es el comportamiento normal, y lo que está haciendo (llamándolo usted mismo) está bien.


popoverControllerDidDismissPopover: en el delegado no se llama cuando se utiliza ''dismissPopoverAnimated:''.

De la documentación de Apple para popoverControllerDidDismissPopover: en UIPopoverControllerDelegate :

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 :.