Compartir en iOS: iOSSharingPanel

En un tutorial anterior ya vimos de qué forma tan sencilla podemos acceder tanto a la cámara fotográfica de los dispositivos basados en iOS como al carrete fotográfico y, por tanto, a los álbumes de imágenes. Ahora veremos de qué forma tan simple podemos compartir contenidos de imagen de nuestras apps creadas con Xojo con otras aplicaciones y servicios de iOS mediante iOSSharingPanel.

Si quieres completar el tutorial de principio a fin tendrás que comenzar por el anterior tutorial, puesto que será el que usemos como punto de partida. Si sólo estás interesado en ver cómo funciona el Panel Compartir de Xojo para iOS entonces no es necesario.

iOSSharingPanel

La primera consideración es que, al igual que ocurre con otras muchas clases de Xojo, el control iOSSharingPanel no dispone de representación gráfica cuando se arrastra desde el panel Librería sobre el Editor de Diseños, sino que este queda reflejado como instancia en el Tray —la franja inferior en el Editor de Diseños—, así como en la propia jerarquía de controles que cuelga de la vista editada en el Navegador de Proyectos (la columna situada más a la izquierda en el IDE de Xojo).

iOSSharingPanel en el Tray

En cualquiera de los casos, el resultado es el mismo: habrás creado una nueva instancia cuyo nombre por omisión será SharingPanel1. Ya sabes que puedes modificar dicho nombre en el campo name panel Inspector correspondiente tras seleccionar la instancia. Este será el nombre de la instancia que utilizaremos en el código para identificar (referirnos) al objeto.

Con la instancia añadida a la única vista de nuestro proyecto iOS (por omisión View1), el siguiente paso consiste en añadir la acción que provoque la aparición del panel de compartir. En nuestro ejemplo se tratará de compartir la imagen correspondiente a la celda de la tabla sobre la que pulsemos. Es decir, la celda o entrada seleccionada de la tabla. Y si bien en este ejemplo compartiremos una imagen, hay que indicar que el panel iOSSharingPanel también puede compartir textos y URLs.

Presentar el panel iOSSharingPanel

Empecemos por añadir una acción a la tabla; y como probablemente habrás imaginado, consiste en añadir el oportuno Evento. Selecciona la tabla Table1 en el proyecto y utiliza Insert > Event Handler para añadir el evento Action. Al hacerlo, verás que en el Editor de Código asociado se presenta la signatura Action(section As Integer, Row As Integer). Es decir, recibiremos como parámetros tanto la sección y fila de la tabla sobre la que se ha pulsado.

En nuestro caso todo lo que necesitaremos será la fila, de modo que podamos recuperar la imagen (instancia de iOSImage) desde nuestro modelo de datos, presente como la propiedad DatosTabla que cuelta de la vista View1. Nuevamente, para conocer qué es este modelo de datos y como se ha creado la clase que la representa, te recomiendo que eches un vistazo a la anterior entrada del tutorial.

El código para recuperar la imagen correspondiente a la celda pulsada de la tabla es el siguiente:

dim p as iOSImage = datostabla.Images(row)

Y una vez que ya tenemos la imagen a compartir, sólo nos queda presentar el panel de compartir propiamente dicho. Algo para lo que sólo necesitamos esta línea de código:

SharingPanel1.SharePicture(p,self,me)

Como puedes observar, en este caso se está invocando el método SharePicture, dado que es el tipo de dato que deseamos compartir. Los otros dos métodos presentes en esta clase son:

  • ShareText. Para compartir texto.
  • ShareURL. Si lo que deseamos compartir es un URL.

El resto de los parámetros que pasamos al método son los siguientes:

  • P. Se trata de la instancia de tipo iOSImage recuperada en la línea anterior desde nuestro modelo de datos.
  • self. Se corresponde con la instancia de tipo iOSView (en este caso la vista View1) que utilizará el panel como anclaje para sumarse en la jerarquía de vistas.
  • me. Se corresponde con una instancia de tipo iOSControl y que proporcionará al panel las coordenadas más precisas sobre las cuales presentar el panel, especialmente relevante en las aplicaciones iPad.iOSSharingPanel en app iOS de ejemplo

¡Y eso es todo! Para que puedas ejecutar y probar el proyecto en el Simulador de iOS en vez de tener que utilizar un dispositivo físico, selecciona el control Button1 del proyecto, y en su evento Action cambia la primera línea de código por la siguiente:

MyPicturePicker.Source = iOSPicturePicker.Sources.PhotoLibrary

Ejecuta el proyecto, utiliza el botón para seleccionar cualquier imagen de entre las disponibles en el Álbum Fotográfico del carrete y, a continuación, pulsa sobre la celda de la tabla. Al hacerlo verás como se muestra el Panel Compartir de iOS presentando todas las opciones aplicables (aplicaciones y servicios) que pueden compartir y/o utilizar la imagen seleccionada.

En definitiva, tremendamente sencillo y rápido, ¿verdad?

*Esta entrada ha sido escrita en Markdown y exportada como HTML para este blog con Snippery

Javier Rodriguez

Consultor, desarrollador y formador con más de 25 años de experiencia. Reconocido experto en el mundo Apple, autor de varios libros sobre tecnología. Si tienes un proyecto o necesitas ayuda, ¡ponte en contacto conmigo!

Etiquetado con:

Deja un comentario

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

*