[Xojo 2026r2] Mejoras en el Framework iOS

El Framework de iOS ha recibido varias mejoras y novedades en Xojo 2026r2, algunas de las cuales son imprescindibles para las actuales apps iOS creadas con Xojo, mientras que otras están dirigidas a mejorar los diseños de interfaz de usuario y la funcionalidad en tus apps iOS. ¡Descubramos cuáles son!

Tras el telón…

Comencemos en primer lugar con un cambio no visible, pero que es realmente importante y también de gran calado. De hecho, dicho cambio responde a uno de los requerimientos establecidos por Apple para las apps iOS:

“En la siguiente versión mayor tras iOS 26, se requerirá el ciclo de uso basado en UIScene cuando se compile con la versión más reciente del SDK; de lo contrario la app no se ejecutará.”

De modo que hemos realizado todos los cambios necesarios en el Framework de iOS y, empezando con Xojo 2026r2, todas las apps de iOS serán compiladas de modo que se puedan ejecutar y publicar siguiendo el requerimiento de Apple.

¿Qué significa para ti en la práctica? Principalmente que, para cualquiera de tus proyectos iOS de Xojo, todo lo que tendrás que hacer será volver a compilarlos con la versión actual de Xojo. Esto garantizará que contarán con el ciclo de uso de la app basado en UIScene y que podrán ejecutarse sin problemas tanto en los Simuladores de iOS y también sobre los dispositivos iOS físicos en las futuras versiones de iOS publicadas por Apple.

MobilePopupMenu llega a iOS

Hasta ahora, la tarea de realizar selecciones sencillas en los proyectos de iOS requería del diseño de interfaces de usuario más o menos complejas en las que se podían utilizar la navegación a diferentes pantallas, el uso de tablas, containers, etc. A partir de Xojo 2026r2 puedes simplificar todo ello mediante el uso del nuevo control MobilePopupMenu tal y como podías hacer, por ejemplo, en los proyectos Desktop, Web o Android.

De hecho, dicho control hace uso de la una nueva clase para las entradas que mostrará: MobileMenuItem (más sobre esto un poco más adelante), si bien también es posible añadir entradas basadas simplemente en texto si así lo deseas. En cualquier caso, tanto si utilizas instancias de la nueva clase MobileMenuItem o bien añades entradas basadas en texto, las entradas subyacentes serán en todo caso instancias de MobileMenuItem, de modo que estas serán las recibidas en el evento SelectionChanged.

Es posible poblar las entradas de MobilePopupMenu en tiempo de diseño mediante el panel inspector asociado, así como elegir el índice de selección utilizado por omisión (esto es, el elemento de menú que aparecerá seleccionado cuando ejecutes la app); pero, por supuesto, también podrás hacer todo esto en tiempo de ejecución e incluso modificar las entradas de menú para el control tal y como estabas acostumbrado hacerlo por ejemplo en tus proyectos Desktop.

MobileMenuItem

Esta nueva clase añadida al Framework de iOS te permitirá crear entradas de menú para MobilePopupMenu, pero también para las propiedades Menu añadidas a MobileButton y MobileToolbarButton.

Tal y como sucede en Desktop, es posible crear entradas de menú jerárquicas y también definir un icono para cada una de las entradas; pero lo que es específico a MobileMenuItem en iOS son las propiedades Destructive (Booleana) y DisplayMode (Enumeración). Cuando una instancia de MobileMenuItem se define como Destructive esta se mostrará como tal siguiendo las guías de diseño de iOS, de modo que el usuario de la app obtenga una pista visual sobre la característica destructiva asociada con la selección de dicha entrada, como por ejemplo el borrado de elementos.

Por otro lado, la propiedad DisplayMode puede definirse con los valores Regular (el típico menú desplegable) o bien con el valor Palette. Cuando se utiliza este segundo valor, las entradas que cuelgan del menú se presentarán en una pequeña paleta por la cual se podrá navegar haciendo scroll horizontal; especialmente recomendad para diseños de IU compactos cuyas opciones se muestren sólo como iconos.

Cuando una instancia de MobileMenuItem se utiliza en un MobilePopupMenu entonces no se mostrarán los iconos definidos para dichas entradas, y también se descartará cualquier submenú que cuelgue de cualquiera de las entradas de primer nivel, tal y como ocurre también en Desktop y Web. Por otra parte, tanto MobileButton como MobileToolbarButton soportan los menús jerárquicos y mostrarán también los iconos asociados con cada una de las entradas.

MobileButton

Tal y como se ha indicado previamente, este control tiene nuevas propiedades relacionadas con su soporte para mostrar un Menu. También es posible definir el menú (instancia de MobileMenuItem) en tiempo de ejecución, e incluso el comportamiento que tendrá mediante la propiedad DisplayMenuAction, de tipo Booleana.

Cuando DisplayMenuAsAction se define a False (el valor por omisión), entonces el botón dispará su evento Pressed como viene siendo habitual, mientras que será preciso hacer una pulsación larga para mostrar el menú asociado. La opción de menú seleccionada se recibirá mediante el manejador de evento MenuItemSelected(menu As MobileMenuItem) y que se puede implementar en la instancia de botón propiamente dicha. En definitiva, una buena forma de que el botón pueda reaccionar a dos interacciones de usuario distintas.

Si la propiedad DisplayMenuAsAction se define a True, entonces el menú asociado se presentará cuando se haga tap sobre el botón y, por tanto, no se disparará el evento Pressed, sólo lo hará el evento MenuItemSelected una vez que el usuario haya seleccionado una opción del menú.

MobileToolbarButton

MobileToolbarButton también incluye ahora las nuevas propiedades Menu y DisplayMenuAsAction, y dichas propiedades se comportarán del mismo modo que se ha explicado ya en el caso de MobileButton. La principal diferencia es que, en este caso, el evento MenuItemSelected ha de implementarse en la instancia Screen que contenga la NavigationBar en la que está incluido el MobileToolbarButton, tal y como ocurría también en el caso del evento ToolbarButtonPressed ya existente en anteriores versiones del Framework iOS.

Badges

Además del soporte de menús, MobileToolbarButton también ha recibido la capacidad de mostrar badges. Esto resulta realmente útil para simplificar muchos de los diseños de interfaz de usuario de iOS, ya que en este caso el botón es capaz de mostrar información relevante… en vez de tener que dirigirse a un panel u otra pantalla para acceder a ella.

El modo en el que se muestra la información en dicho badge es mediante la propiedad MobileToolbarButton.BadgeText. Si el valor de dicha propiedad se establece a una cadena vacía entonces se eliminará dicho badge del botón asociado. Además, también encontrarás otras propiedades que te permitirán personalizar su aspecto:

  • BadgeColor As ColorGroup. Define el color de fondo para el badge.
  • BadgeTextColor As ColorGroup. Define el color para el texto mostrado en el badge.
  • BadgeTextFont As Font. Define la fuente, estilo y tamaño de fuente a usar en el texto del badge.

En resumen

Si bien el nuevo ciclo de uso basado en escenas para las apps iOS es, de lejos, la novedad de mayor calado en el Framework de iOS, dado que supone un requerimiento exigido por Apple para que puedas continuar ejecutando y publicando tus apps, estamos seguros de que también encontrarás útiles el resto de las novedades añadidas en esta nueva versión de Xojo y que te permitirán simplificar los diseños de tus apps iOS.

Estamos deseando saber más sobre cómo tienes pensado aplicar y utilizar dichas novedades en tus proyectos de iOS de modo que no seas tímido y compártelo con nosotros en el foro de Xojo.

Quiero agradecer especialmente a nuestro MVP Jérèmie Leroy, porque es sin duda el NÚMERO UNO a la hora de ayudar en todo lo relacionado con iOS en Xojo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *