Cuando abro una UIView personalizada desde un UITableViewController, ¿cómo cierro la vista personalizada y vuelvo a la vista de tabla?

StackOverflow https://stackoverflow.com/questions/1029703

Pregunta

Estoy usando un UITableViewController para un menú en un juego. La vista de tabla abre un controlador de vista para mi UIView personalizado que muestra el juego. Cuando finaliza el juego, se notifica a UIView (que está arruinando un poco a los directores de MVC) y desde allí estoy un poco perdido.

Preguntas:

  1. ¿Puede un UIView comunicarse con su controlador? ¿Cómo?
  2. ¿Puede un controlador hablar con el que lo inició? ¿Cómo?
  3. ¿Cómo hago la transición entre toda esta complicada red de vistas y controladores con gracia?
¿Fue útil?

Solución

  1. Use un protocolo delegado aquí. Su juego personalizado UIView puede usar una propiedad delegate y métodos de llamada en este delegado cuando ocurren eventos (juego terminado, juego en pausa, vista cerrada, etc.). Aquí hay una gran publicación sobre el uso de delegados: ¿Cómo creo delegados en Objective- C?

  2. Recomiendo usar un UINavigationController. No necesariamente necesita mostrar la barra de navegación, pero si anida sus controladores de vista en un controlador de navegación tiene acceso a -pushViewControllerAnimated: y -popViewControllerAnimated: que hacen es muy fácil navegar entre niveles de controladores de vista anidados.

  3. Otro beneficio de UINavigationController: obtendrá una agradable animación de diapositiva cuando cambie de vista.

Existen otros mecanismos de terceros que puede preferir a los mecanismos UIKit UINavigationController / UIViewController. Consulte el proyecto Three20 , en particular la clase TTNavigationCenter.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top