[Xamarin Forms, ReactiveUi] Page.Appearing en iOS

En el día a día, trabajando con Xamarin.Forms y ReactiveUi, una de las situaciones más confusas es cuando tienes que lidiar con el ciclo de vida de las vistas, sobre todo cuando hablamos de iOS.

El problema en iOS es que el evento Page.ViewAppearing se lanza demasiado tarde. Esto hace que si tienes tareas preparándose en ese momento, puede que tu vista rompa la aplicación y claro, esto es lo peor que te puede pasar.

Revisando en internet encontré este artículo, dónde su autor nos ofrece una ayuda inestimable y que, como siempre, demuestra que la comunidad de Xamarin es activa y sale al rescate.

Igualmente, a pesar de tener implementada esta solución, a veces ReactiveUi sufre y nuestros habituales bindings nos juegan una mala pasada. Nada que no tenga solución.

Esto sería un binding normal:

this.OneWayBinding(ViewModel, vm => vm.Propiedad, v => v.Elemento.Propiedad).DisposeWith(disposables);

En caso de fallo, siempre nos queda la posibilidad de aprovecharnos de los Observables:

this.WhenAnyValue(v => v.ViewModel.Propiedad).Where(x => x != null).Subscribe(prop => this.Element.Propiedad = prop).DisposeWith(disposable);

Es posible que exista alguna solución alternativa y si la tienes me encantaría leerte o escucharte, pero con esto consigo evitar situaciones que me complican el día a día.

Si necesitas profundizar más en el framework de ReactiveUi, me reitero y te recomiendo que leas los artículos de Ramón Esteban. Encuentras el primero en este enlace y el segundo en este otro.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s