Pregunta

Estoy tratando de implementar un modal de superposición parcial en mi aplicación con el código de "diálogos semimodales (transparentes) en el iPhone" en ramin.firoozye.com. La funcionalidad de superposición funciona y desliza el modal a la vista, pero llamar a cualquier iBaction del controlador del modal provoca un bloqueo de "selector no reconocido enviado a instancia".

Recreé la funcionalidad básica con ese código aislado, y desencadena el mismo error. Para ver de lo que estoy hablando, puedes Descargue el proyecto de prueba aquí.

Estoy seguro de que me estoy perdiendo algo simple aquí. Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

Al mostrar su ModalViewController en TestViewController DisplayModal:, libera su modalcontroller (línea 20). No hagas esto, necesitas el ViewController para mantenerse con vida. Si lo libera, solo la vista mantiene viva (como se retiene cuando se agrega como subvisión).

Además, en ModalViewController Hidemodalended, libera ModalView, que no retuvo, por lo que también eliminaría esa.

Por lo tanto, ahora debe lanzar solo la instancia de ModalViewController después de que se eliminó la vista. Puedes hacer esto por [auto liberación]; En Hidemodalended, pero este parece ser un patrón inusual y no me siento bien haciéndolo.

Algunas sugerencias:

  • Mantenga el espectáculo y oculte los métodos en la misma clase.
  • Mantenga un Ivar con el controlador.
  • Otra posibilidad: eliminar el ModalViewController por completo y poner todo en TestViewController, pero esto depende de cuánta acción estará sucediendo en lo real.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top