Pregunta

He estado trabajando en mi primer proyecto Xcode/iOS y hasta ahora ha sido una experiencia agradable. Actualmente, estoy trabajando en un archivo NIB que actúa como una pantalla principal para otras vistas. Dentro de este archivo de NIB, tengo un UIView primario y al lado estoy diseñando una serie de otras siete vistas. En tiempo de ejecución, intercambio estas siete vistas dentro y fuera cuando sea necesario, dentro de un contenedor uivie, ubicado en mi UIView principal.

En mis 8 vistas totales que estoy diseñando en IB, tengo una gran cantidad de botones, imágenes y otros objetos que deben estar vinculados a Iboutlets. A medida que este proyecto se está haciendo más grande, sería útil si pudiera dividir mi clase en varios archivos de código.

El uso de categorías es la solución, sin embargo, he afectado una molestia: cuando intenté crear un IBoutlet en uno de los encabezados de mi categoría, el compilador XCode me sigue dando errores y advertencias sobre Ivars y puntos de venta. En mi punta tengo una gran cantidad de objetos que necesitan salidas y preferiría no tener que definirlos en un archivo de código enorme si es posible.

Sin embargo, entiendo que tengo que trabajar dentro de mis limitaciones, por lo que mi pregunta es un poco diferente a preguntar cómo agregar un iBoutlet a una categoría. En cambio, me gustaría saber cuáles son las mejores prácticas para dividir una gran clase UIViewController en múltiples archivos de código. ¿Cuáles son las limitaciones de Objective-C y cuál es la mejor manera de estructurar su código cuando se trabaja con el diseño de interfaz?

Mi código aún no es difícil de manejar, pero realmente me gustaría comenzar a reestructurarlo para que sea mucho más manejable cuando consta de los años 100 y 1,000 de líneas de código.

Cualquier indicador será de ayuda. ¡Gracias!

¿Fue útil?

Solución

Puede crear una punta que contenga varios objetos de controlador, cada uno administrando las vistas relevantes, y eso ayudará a mantener su código más manejable. La desventaja es que su huella de memoria es mayor cargando una punta grande.

Para lograr esto, defina los controladores en clases separadas con IBoutlets relevantes, y luego arrastre el NSObject desde la bandeja de objetos (donde el uilabel, uibutton, etc. están) en IB. Luego, para cada objeto, defina su clase al controlador correcto, y tendrá acceso a todas las salidas y acciones correctas. Luego puede conectar los controladores en un solo UIViewController para controlar cómo interactúan entre sí.

Sin embargo, la forma preferida sería NIBS separada para controladores separados y tenerlos a todos como subclases UIViewController. Si te mudas a iOS5, han reemplazado las puntas en IB con guiones gráficos. Estos le permiten tener UIViewControllers separados en un solo archivo IB, sin embargo, son más eficientes en el uso de la memoria, ya que no mantienen todo el árbol de objetos en la memoria.

Otros consejos

Esta es una pregunta bastante cargada. Pero, en mi experiencia, descubrí que IB me causa más dolores de cabeza de lo que vale en situaciones complicadas como esta. Recomiendo simplemente olvidar IB para este escenario y simplemente crear sus puntos de vista en el código. Se supone que IB alivia algunas de las tareas más mundanas de diseño, estilo, etc.

Recomiendo que todas sus puntos de vista se coloquen en sus propios archivos de proyecto, ya que esto ha valido la pena ... nada más doloroso que desplazarse a través de 1000 de líneas de código para encontrar lo que necesita ... y peor aún, usar ese terrible Widget de colapso de código en la canaleta.

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