ios - custom - Storyboards vs. la antigua forma XIB
swift xib (2)
Es beneficioso aprender ambos enfoques.
Además del valor histórico en el enfoque xib, xib también proporciona modularidad. Tal vez tenga una biblioteca de código o desee compartir un widget útil que haya creado. Adoptar el enfoque xib facilitaría el intercambio y la reutilización.
El enfoque xib también le permite una mayor flexibilidad en términos de su propio código. Por ejemplo, iOS 5 contenía un error con el UITableView
y accesibilidad / VoiceOver que causaría -dequeueReusableCellWithIdentifier:
devolver nil
pesar de estar documentado de otra manera (consulte esta publicación en el blog para obtener más detalles). Cargar dinámicamente las celdas de la vista de tabla de xib proporciona la capacidad de evitar el error.
Si bien el soporte de tabla y tabla en Storyboards es maravilloso y proporciona soporte para lo que la mayoría de la gente necesita hacer en una tabla, a veces hay que colorear fuera de las líneas, es posible que necesite muchas celdas diferentes y, una vez más, cargar dinámicamente desde xibs tu solución.
Una gran ventaja de Storyboard es la capacidad de ver el flujo de la GUI de toda la aplicación. Alejar y se puede ver cómo todo se conecta y fluye. Con xibs, aunque la modularidad es agradable, es más difícil imaginar cómo todo se conecta y fluye en conjunto. Esta puede ser una característica útil para usted, o si tiene un equipo más grande para compartir, para permitir que otros vean cómo fluye la aplicación.
Hay valor en ambos enfoques, y es bueno saber ambos para que pueda elegir la mejor herramienta para su tarea.
Actualización 2014-10-06 - Desde que escribí lo anterior, he estado involucrado en más proyectos. Algunos con xib, algunos que podrían usar storyboards.
Los guiones gráficos han madurado mucho (ahora estamos en Xcode 6), y hay muchas cosas buenas con ellos. Realmente me encanta cómo se puede hacer mucho más dentro de un guión gráfico que es un poco más complicado en un enfoque xib. Un par de ejemplos:
Una de ellas es cuando se trabaja con UITableView
o UICollectionView
cuánto puede trabajar con las células prototipo directamente en el guión gráfico. Una gran cantidad de configuración agradable y fácil, la mayor parte del trabajo pesado puede estar en el guión gráfico, menos código. Es bastante agradable. Tratar de hacer esto en el enfoque xib es ciertamente factible, pero hay mucho más trabajo para lograrlo.
Otro es qué tan bien puede hacer la transición entre UIViewController
s con los UIViewController
regulares y luego volver con los segmentos de desenrollado. Todo bien en el guión gráfico, con un código mínimo. Es tan útil.
Pero la única cosa que aún mata los guiones gráficos para mí es tratar de usarlos en entornos colaborativos. Simplemente no va a fusionarse bien. Y en cierto sentido, no es así incluso si estás trabajando en un equipo de> 1 persona. Si usted mismo aprovecha el control de versiones, utilice un buen modelo de bifurcaciones y fusiones para su propio flujo de trabajo personal, puede llegar el momento en que deba realizarse algún cambio en alguna sucursal que deba llevarse a otra sucursal, y oh el dolor Para mí, esto es lo que mata a los guiones gráficos.
A medida que el tiempo y el trabajo han evolucionado, lo que estoy descubriendo es que los guiones gráficos son geniales para la creación de prototipos. La capacidad de hacer que las cosas funcionen rápidamente es un gran beneficio de los guiones gráficos. Hay mucha velocidad en usarlos. Pero la velocidad tiene un costo. Cuando se trata de escribir el código "real" para algún proyecto, me voy a quedar con Xibs porque si bien puede ser más trabajo, es una ruta más flexible que funciona mejor en equipos más grandes o en el tiempo.
Actualización 2015-04-07 Otra actualización, porque los proyectos de los últimos meses me han obligado a usar guiones gráficos, lo que me ha proporcionado más información.
Primero, algunas cosas obligarán a un enfoque u otro. Por ejemplo, aparentemente hubo algunos errores de borde al trabajar con clases de tamaño en xibs que no existían haciendo lo mismo en un guión gráfico. Entonces, si te afectan los insectos, eso puede forzar tu mano de una manera u otra. Otra es recordar que los guiones gráficos generalmente funcionan en el nivel UIViewController
, por lo que si necesita hacer algo como tener un UIView
o un UICollectionViewCell
para cargar, probablemente un xib lo servirá mejor.
Segundo, y no sé por qué esto no se me ocurrió al principio, ¡pero no hay nada que requiera que uses un guión gráfico singular para todo tu proyecto! Creo que la naturaleza del guión gráfico permite a las personas gravitar de esa manera, pero tenemos que recordar que nada manda eso (que yo sepa).
Lo que he encontrado que funciona bien es acercarse a cada "agrupación de vistas" por guión gráfico. Es decir, a menudo sus ViewControllers tienden a estar aislados y terminan siendo 1 por guión gráfico (o xib). Pero es posible que tenga una situación en la que tenga dos ViewControllers estrechamente relacionados, y tiene sentido ponerlos en el mismo guión gráfico, especialmente porque entonces puede conectar fácilmente cosas entre ellos, como los segues.
La principal ventaja de múltiples guiones gráficos? Trabajando en equipo De esta forma, Fred puede trabajar en su guión gráfico y Wilma puede trabajar en su guión gráfico, ¡y no hay grandes preocupaciones de problemas de fusión o coordinación de trabajo! El uso de varios guiones gráficos (y generalmente 1 ViewController por guión gráfico) ha sido de gran ayuda en el uso de guiones gráficos en un equipo de desarrollo de múltiples personas.
Es bastante evidente que Apple quiere que nosotros prefiramos guiones gráficos, y los estoy abrazando más en estos días. Usar varios guiones gráficos, pero aún usar un xib cuando sea necesario, está funcionando bastante bien ahora.
Actualización 2015-09-21 Ahora que Apple lanzó Xcode 7 , hay aún más razones para adoptar storyboards, ya que Apple trabaja para superar las deficiencias.
La mejora más importante son las referencias al guión gráfico , que le permiten crear en un guión gráfico una referencia a otro guión gráfico. Es muy fácil de hacer, y ahora puedes tener segues de guiones cruzados (tanto de entrada como de salida). Ya he usado esto algunas veces en un nuevo proyecto y es simplemente una alegría.
Otra mejora es que puede crear clases UIView
independientes dentro de un guión gráfico. Sin embargo, a partir de este escrito he tenido resultados mixtos con él. Los casos simples funcionan bien, pero algunas cosas más "complicadas" no funcionaron. Por ejemplo, tenía un UIViewController
con una UITableView
dentro de él. Como iba a ser una tabla simple con 5 celdas estáticas, me limité a crear una instancia de las 5 UITableViewCell
como parte de ViewController en el guión gráfico. Parecía que funcionaba, pero luego, en tiempo de ejecución, nada se cargaba realmente y aparecía; movió el UITableViewCell
s a un xib, y todo funcionó. No estoy seguro de si estaba haciendo algo mal o lo que puede ser, entonces, YMMV. Pero aún así, incluso si solo hay algunos caprichos, con el tiempo estoy seguro de que Apple los resolverá y luego caerá otra barrera contra los storyboards. Yo diría que si necesitas tal apoyo, debes probarlo y ver cómo te va. Hay una gran promesa.
Cada vez más, los guiones gráficos se perfilan para ser excelentes.
Soy nuevo en iOS y me preguntaba cuál es el mejor para aprender. He leído algunas de las respuestas aquí y SO, pero algunas personas dicen que usar Storyboards otros dirán que primero aprenden XIB. ¿Hay algún beneficio real para aprender XIB? ¿Los XIB son más fáciles de entender y ayudarán con los guiones gráficos?
Hay cosas que puedes hacer con un guión gráfico que no puedes hacer con un plumín. Un guión gráfico le permite crear divisiones entre los controladores de vista, y le permite diseñar celdas de vista de tabla en contexto.
Hay cosas que puedes hacer con un plumín que no puedes hacer con un guión gráfico. En una punta, puede crear referencias al marcador de posición Propietario del archivo. Puede crear múltiples vistas de nivel superior, editarlas y crear conexiones entre ellas. Vea esta respuesta como un ejemplo de por qué querría hacer eso. Puede agregar marcadores de posición de objeto externos (una característica rara vez utilizada).
Los guiones gráficos tienen el inconveniente de que reúnen un grupo de objetos diferentes y poco relacionados en un gran archivo. Si está trabajando en un proyecto con varios desarrolladores, es mucho más probable que se encuentre con conflictos de fusión si está utilizando un guión gráfico que si está utilizando archivos xib.
Definitivamente deberías aprender sobre las puntas en algún punto. Si desea comenzar con ellos o comenzar con un guión gráfico probablemente no sea demasiado importante. Simplemente encuentre algunos tutoriales que le gusten y trabaje con ellos con cualquier tipo de archivo (punta o guión gráfico) que use.