>

Xamarin iOS, conceptos básicos

Miguel A. Gómez     Colaboraciones    16/12/2016


Xamarin ios

En el artículo anterior vimos una introducción general a Xamarin. En este artículo continuaré profundizando en el desarrollo con Xamarin, en particular con Xamarin.iOS.

Xamarin.iOS permite desarrollar aplicaciones para la plataforma iOS utilizando herramientas y librerías de Xamarin. Ofrece el acceso completo a la API de iOS (Cocoa touch), cualquier app que se pueda hacer con Swift o Objective C, se puede hacer con Xamarin y C#.

La interfaz de usuario se crea utilizando las vistas nativas de iOS, ya sean Storyboards o ficheros XIBs, mientras que la lógica de la aplicación es escrita en c#.

api xamarin ios

Instalación

En Windows

Lo primero que tienes que hacer es descargar Visual Studio Community. A continuación, tras ejecutar el instalador tienes que seleccionar instalación personalizada y activar el checkbox de Xamarin dentro del apartado de desarrollo móvil multiplataforma. Debes tener en cuenta que para compilar y acceder a opciones como el editor visual de iOS necesitas tener conexión con un Mac. Esta conexión se realiza a través de una herramienta de Visual Studio, denominada Xamarin Mac Agent.

En Mac OS

El pasado mes de noviembre Microsoft realizó el lanzamiento de Visual Studio para Mac, así que para trabajar con Xamarin en esta plataforma, tan solo tienes que descargar el instalador de Visual Studio y a continuación un asistente te guiará en su instalación y en los SDKs necesarios.

visual studio mac



Primera aplicación en iOS

Una vez instalado Visual Studio, se procederá a crear una aplicación de ejemplo que servirá para exponer conceptos básicos de un proyecto en Xamarin.iOS. Se trata de una app sencilla, cual simplemente mostrará el incremento de un contador cada vez que se pulse un botón.

A continuación dirígete a Visual Studio, selecciona crear una nueva aplicación y escoge de las plantillas de iOS, Single View App (iPhone).

single view

Tras crear la solución, si te encuentras en Windows, se intentará realizar una conexión con un Mac utilizando Xamarin Mac Agent. En este artículo haré uso de Visual Studio para Mac, con lo cual no me extenderé con el uso de Xamarin Mac Agent.

Estructura del proyecto

Veamos cuales son los elementos que componen el proyecto:

  • Properties: contiene las propiedades del ensamblado.

  • References: conjunto de librerías necesarias para compilar y ejecutar el proyecto. Hay tanto referencias a ensamblados .NET como System o System.Xml además de la referencia a Xamarin.iOS.

  • Resources: recursos multimedia del proyecto, iconos, imágenes, etc..

  • Main.cs: punto de entrada de la aplicación.

  • AppDelegate.cs: clase principal de la aplicación. Es responsable de construir la interfaz de usuario.

  • Main.storyboard: diseñador visual de la vista de la aplicación.

  • ViewController.cs: es la C de MVC. Relaciona la vista con el modelo, aunque en este caso solo se encarga de gestionar el evento del botón.

  • Info.plist: fichero de configuración en el cual se establecen propiedades como el nombre de la aplicación, iconos y demás.

  • Entitlements.plist: fichero de configuración en el cual se establecen las capacidades requeridas por la aplicación.


De los elementos voy a hacer hincapié en las clases Main.cs y AppDelegate.cs ya que ambas son fundamentales en la arquitectura de la aplicacion iOS.

Como he comentado, la clase Main.cs es el punto de entrada de la aplicación. Contiene un método estático que crea la instancia de la aplicación Xamarin.iOS, recibiendo por parámetro el nombre del delegado de la aplicación:

using System;
using UIKit;
 
namespace HelloIOS
{
     public class Application
     {
          static void Main (string[] args)
          { 
               UIApplication.Main (args, null, "AppDelegate");
          }
     }
}

AppDelegate.cs gestiona tanto la creación de la ventana, como de eventos importantes del sistema que afectan a la aplicación, por ejemplo el cierre de la misma. La ventana (Window) es una instancia de la clase UIWindow que permite contener la interfaz de usuario. Por defecto, una aplicación iOS contiene una única Window donde carga el contenido:

using System;
using Foundation;
using UIKit;
 
namespace HelloIOS
{
 
     [Register ("AppDelegate")]
     public partial class AppDelegate : UIApplicationDelegate
     {
          public override UIWindow Window {
               get;
               set;
          }
     }
}

Una vez analizada la estructura de la solución, comenzaremos a implementar la aplicación definiendo la interfaz de usuario. Abre el archivo Main.storyboard haciendo doble clic, tras realizar esta acción se mostrará el diseñador del iOS. Desde el menú herramientas tendrás acceso a todos los controles disponibles en iOS. Selecciona un UIButton, arrástralo a la vista y modifica el identificador y el nombre del mismo, llámalo “MyButton”.

propiedades

Tras definir la interfaz de usuario, se creará la lógica de la misma. En la clase ViewController.cs añade una variable entera para llevar el contador de clics y se suscribe el botón a su propio evento TouchDown para que cada vez que se pulse se aumente el contador y se muestre el resultado en el atributo “tittle” de dicho botón, quedando el código del ViewController tal que así:

public partial class ViewController : UIViewController
{
     int count = 0;
 
     public override void ViewDidLoad()
     {
          base.ViewDidLoad();
 
          MyButton.TouchDown += (e, args) => { MyButton.SetTitle(string.Format("{0} clics", count++), UIControlState.Normal); };


     }
}

Si ejecutas el proyecto este sería el resultado:

resultado

Resumen


En este artículo se ha tratado de introducir los elementos básicos para comenzar a desarrollar con Xamarin.iOS, me he dejado muchas cosas en el tintero, pero la idea es continuar profundizando en próximos artículos. Si te ha gustado la entrada valora y comparte en tus redes sociales. No dudes en comentar dudas, aportes o sugerencias, estaré encantado de responder.


Sobre el autor

Miguel A. Gómez   

Sofware Engineer & aspiring Craftsman. Si quieres saber más sobre mi pásate por mi blog: miguelgomez.io