[ES] Integrando un ViewModel para gestionar un SlideMenu con SwiftUI

Continuamos expandiendo las fronteras de lo que hemos construido previamente, y en este artículo, estamos listos para enriquecer nuestra implementación de SwiftUI con la adición de un ViewModel. Nuestro enfoque lleva las cosas un paso más allá, dado que los Bindings de los TabView no funcionan como cabría esperar, para asegurar el correcto funcionamiento de nuestros componentes. Prepárate para descubrir cómo un ViewModel puede ser la clave para desbloquear un nuevo nivel de eficiencia y efectividad en nuestras aplicaciones, incluso cuando las rutas tradicionales no estén alineadas con nuestras necesidades.

Partiendo del código de ejemplo del anterior post, vamos a añadir nuestro ViewModel y en él trasladamos y convertimos nuestros State en Published. Además, la lógica que aplicábamos en los onAppear de los tabs pasa a estar en el ViewModel cuando el valor de la opción seleccionada cambia.

Con este cambio hecho, quitamos esas referencias en la vista, enlazamos el ViewModel como ObservedObject para poder ver sus cambios y podemos retirar la gestión que hacíamos en los onAppear porque ya se gestiona en el ViewModel todo el ciclo de vida.

Pero hay un cambio que no hemos comentado todavía, el Binding al TabView cambia de formato porque si asignamos con su forma reducida, cuando seleccionamos el menú, no previene que esa vista se muestre porque el ciclo de vida en la asignación con dólar y la escritura completa de la gestión del binding es diferente. El Binding usando dólar en el caso del TabView sólo transmite la opción seleccionada la primera vez, el resto del tiempo es el control el que tiene la gestión de todo el ciclo. En cambio, con la opción de escribir toda la gestión del binding nos aseguramos de que siempre se propaga el valor desde el ViewModel a la View.

Como siempre, el código del que se habla en este artículo está completo disponible en Github en este repositorio.

Comments are closed here.