2010-05-23 17 views
6

Existen muchos recursos relacionados con la codificación en el iPhone. La mayoría de ellos se refieren a "cómo hago X", p. "configurar un controlador de navegación" o "descargar texto de una URL". Todo bien y bien.Desarrollo de iPhone: patrones de diseño de aplicaciones

Lo que más me interesan ahora son las preguntas que siguen las cosas más simples: cómo estructurar mejor su interfaz de usuario compleja, o su aplicación, o los problemas comunes que surgen. Para ilustrar: un libro como "Beginning iPhone 3 Development" le dice cómo configurar una aplicación multi viewcontroller con un controlador de vista "switcher" superior que alterna entre las vistas propiedad de otros controladores de vista. Bien, pero solo se te dice cómo hacerlo, y nada acerca de los problemas que pueden surgir: por ejemplo, si utilizo su paradigma para cambiar a un UINavigationViewController, la barra de navegación termina demasiado baja en la pantalla, porque UINavigationViewController espera ser el UIViewController superior (aparentemente). Además, los métodos de delegado (por ejemplo, relacionados con los cambios de orientación) van al controlador de vista superior del conmutador, no al controlador real responsable de la vista actual. Tengo soluciones para estas cosas, pero se sienten como hacks lo que me hace infeliz y me hace sentir que me estoy perdiendo algo.

Una cosa productiva podría ser mirar algunos proyectos de código abierto de iPhone (ver this question). Pero aparte de eso?

actualización

Para aclarar: Supongo que lo que estoy preguntando podría resumirse como "Recetas y Gotchas para el desarrollo del iPhone". El tipo de cosas que son de interés para los desarrolladores, pero no están cubiertos en cualquiera de los libros de iPhone etc. que he visto, tales como:

  • Estoy escribiendo una aplicación para iPad y quieres una UISplitViewController presentó al usuario solo algunos del tiempo, que Apple parece estar diciendo que no puedo hacer. ¿Es posible? ¿Cómo?

  • Apple no me da una forma de estilizar mi aplicación de forma conveniente, en general (por ejemplo, ajustes de fuente, o colores). ¿Cómo puedo abordar el diseño de mi aplicación?

  • gestión de memoria no se hace más fácil por algunas de las inconsistencias en nombres de los métodos UIViewController (por ejemplo viewDidUnload es no lo contrario de viewDidLoad, a pesar del nombre). ¿Existe una forma consistente y fácil de arreglarlo y hacer que la administración de la memoria del controlador de vista sea menos propensa a errores?

  • ¿Cómo puedo probar mis controladores de vista de manera consistente y fácil para que se comporten correctamente cuando aparece una advertencia de memoria? Es fácil simular una advertencia de memoria en el simulador, pero si se muestra la interfaz de usuario que deseo probar (y es un controlador de vista de nivel de hoja), no se descargará su vista porque está actualmente visible.

N.B. Realmente no estoy haciendo las preguntas anteriores aquí - ¡Creo que tengo respuestas decentes para ellas! - simplemente dando ejemplos de 'buenas' preguntas que ilustran esta pregunta stackoverflow.

+1

que saben u puede ocultar las barras de controladores de navegación ... si está utilizando dos controladores de navegación y empujar uno en otro, usted tendrá que esconder una de sus barras de navegación .. – Daniel

+0

y sí por desgracia a veces Es posible que la rotación de los controladores de vista no se active porque solo se invoca en el controlador de vista superior, pero puede registrarse para recibir notificaciones de rotación y comportarse como corresponde. – Daniel

+0

Gracias Daniel. El problema al escuchar los eventos de rotación es que terminas manejando tu propia reorientación (incluida la traducción del sistema de coordenadas, etc.) y es un agujero infernal de conejo en el que no quiero volver a terminar (tenía que hacerlo una vez) . – occulus

Respuesta

0

Por lo que puedo decir, no hay un libro o recurso que se ocupe del tipo de recetas y recetas avanzadas que estaba buscando. Existen montones de recursos útiles, pero no abordan las cosas en las que estoy pensando.

0

Es posible que desee considerar ver videos como el curso CS193p de Stanford en iTunes U. Pasan por las partes más importantes del desarrollo de iOS en profundidad, y dan algunos códigos fuente.

+0

Los materiales de aprendizaje de iTunes U son ciertamente muy útiles. Pero todavía parecen cubrir las cosas en el nivel "equivocado" para esta pregunta, es decir, detalles profundos, como usted menciona.Estoy hablando más acerca de la estrategia de diseño de aplicaciones de alto nivel para la estructura de UI, y ese tipo de cosas. – occulus

4

Las conversaciones WWDC disponibles en iTunes U (en http://developer.apple.com/videos/wwdc/2010/) contienen información importante sobre la estructuración, especialmente en la sección de marcos de la aplicación.

Si estamos hablando sobre el código, utilice el patrón Modelo/Vista/Controlador igual que en la mayoría de las aplicaciones Web:

  • El código de modelo define los objetos que su programa representa. Una aplicación de seguimiento de tiempo, por ejemplo, puede tener objetos de modelo como Tarea, Tiempo de compás y Usuario (especialmente en una configuración de red).
  • El código de vista se proporciona para "gratis" con el iOS SDK, a menos que necesite un código de vista especializado. Estos son UIImageView, UIButton, etc.
  • El código del controlador cubre el "espacio" entre el modelo y la vista. El controlador cambiará las vistas para reflejar el modelo seleccionado por el usuario y facilitará la selección de objetos modelo.

Este es el patrón de diseño básico para cualquier aplicación de iPhone, y es el que más usará.

Si, por el contrario, se refiere a lo que en mi empresa llamamos diseño UX (experiencia de usuario), no puede superar las pautas Apple HIG en el conjunto de documentación SDK de iOS de Apple, disponible online o en Xcode en el menú Ayuda.

La otra cosa que recomiendo bastante es jugar con algún código de prueba/dummy. Nada puede superar la experiencia. Experimentar con el SDK de iOS y ensuciarse las manos le permitirá realmente aprender las mejores formas de diseñar aplicaciones.

Editar:

Además, los métodos de delegado (por ejemplo en relación con los cambios de orientación) ir al controlador selector de visualización superior, no el actual controlador responsable de la vista actual.

¿Puedes aclarar? En todas las aplicaciones que he escrito, el controlador de vista que se muestra actualmente recibe los métodos de cambio de orientación. Tenga en cuenta que hay dos métodos. shouldAutorotateToInterfaceOrientation: le permite decidir si la vista debería girar, y didRotateFromInterfaceOrientation: le permite volver a diseñar la vista si es necesario.

+0

Hola Andrew, gracias por tu respuesta. He actualizado la pregunta para dar más una idea de lo que estoy pensando. – occulus

+0

Todavía tengo problemas para encontrar el tipo de información de la que estaba hablando, pero estoy de acuerdo con su buena idea de que la experiencia práctica es muy útil e importante, por lo que acepta esta respuesta. – occulus