Hola Mundo en IPhone con Monotouch

El hola mundo es el programa básico por excelencia para empezar a programar en un nuevo lenguaje o plataforma. Por lo tanto vamos a crear este ejemplo para el IPhone pero en vez de usar Objective-C vamos a usar C# con Monotouch, un excelente Framework provisto por Xamarin.
Para empezar a trabajar con Monotouch deberemos de conseguir las siguientes aplicaciones:
                    Xcode 4
                    Monotouch en su última versión (http://xamarin.com/trial)
                    MonoDevelop 2.8 o superior (http://monodevelop.com/Download)
El orden de la instalación es la siguiente:
1.                  Instalar Xcode 4
2.                  Instalar Mono Framework 2.6
3.                  Instalar MonoDevelop 2.8
4.                  Instalar Monotouch

Si no seguimos este orden tendremos algunos problemas más adelante.
Ya instalados todos los paquetes abrimos el MonoDevelop a través del lanzador de aplicaciones o como en mi caso desde el dock de aplicaciones:
La interfaz de MonoDevelop es muy parecida a la de Visual Studio, por lo que si trabajaste con este IDE antes, MonoDevelop te resultara muy fácil de utilizar.


Nuestro primer paso para crear nuestra aplicación HolaMundo, es crear una nueva solución y elegir el tipo “Single View Application”:


Luego de crear nuestra solución con el nombre IphoneHelloWorld, el IDE nos mostrara la siguiente pantalla:


Si vemos la estructura del proyecto tendremos los siguientes archivos
                    Main.cs que es donde se encuentra el punto de inicio de la aplicación
                    Info.plist que es un archivo XML (aunque no lo crean) que guarda la configuración de nuestra aplicación.
                    ViewController.cs que contiene los métodos para el manejo de la aplicación.
                    ViewController.designer.cs que contiene los métodos y propiedades necesarias para la integración de la vista con la vista.
                    ViewController.xib es un archivo XML que almacena la información necesaria para la definición de las vistas.
Como una Nota, hay que tomar en cuenta que las aplicaciones para IPhone, IPod Touch y IPad usan el patrón Modelo-Vista-Controlador, por lo cual si trabajaste con este patron para Web, te sera familiar cómo funcionan las aplicaciones para estos dispositivos móviles.

Como paso dos, haremos doble click sobre el archivo viewController.xib, para que se abra el editor de interfaces de Xcode, como en la siguiente imagen:


Nota, si tienen MonoDevelop en una versión superior a 2.8.2, deberán de tener instalado como mínimo Xcode 4.2, si no tendrán una serie de errores que no los dejaran trabajar normalmente. Esto es muy importante para los desarrolladores que trabajan en Snow Leopard ya que la máxima versión de Xocde que pueden instalar es la 4.0

Nuestro siguiente paso es agregar un control del tipo Button en nuestra aplicación, que lo arrastraremos desde la barra izquierda, en la sección objects. El nombre del control es Round Rect Button:


Luego de ponerlo el botón al centro de la aplicación y después de cambiarle de tamaño, hacemos doble click sobre este para poder agregarle un texto:



Nuestro próximo paso es ir a la vista doble llamada Assistan Editor que se la acciona pulsando sobre sobre el icono del medio de la barra superior:

Con esta vista podremos ver el código de la aplicación junto con el diseñador de interfaces, ahora para agregar un outlet (lo explico en un momento que es) debemos de pulsar control y hacer click sobre el botón y arrastrar hasta la penúltima línea de código justo antes de @end y darle a Connect.
Ahora guardamos el proyecto, cerramos Xcode y volvemos a MonoDevelop y nos dirigimos al archivo ViewController.cs y agregamos la siguiente función:
         public static String paises()
         {
         String []vec=new String[6];
         vec[0] = "Bolivia";
         vec[1] = "Mexico";
         vec[2] = "Colombia";
         vec[3] = "Espania";
         vec[4] = "Argentina";
         vec[5] = "Peru";

         Random rnd = new Random();
         return vec[rnd.Next(0,5)];
         }

Esta función es simplemente para devolver el nombre de un país al azar de una lista de 5 países. Después agregamos en la función ViewDidLoad, las siguientes líneas de código:
              base.ViewDidLoad ();
              //any additional setup after loading the view, typically from a nib.
              this.hola.TouchUpInside+=(sender, e) => {
                   this.hola.SetTitle("Hola Mundo desde " + paises(),UIControlState.Normal) ;
              } ;

Ahora si lo hacemos correr el sistema, se verá así:

Ahora después de haber terminado el ejemplo se estarán preguntando que es un outlet. Pues bueno verán en .NET estamos acostumbrados a que cuando agregamos un control, este está expuesto automáticamente en la clase del formulario, pues bueno en Monotouch (en Cocoa/CocoaTouch – Objective-C se presenta el mismo escenario) no es así y deberemos de agregar una propiedad que exponga al control, dentro de la clase de controlador, como lo hicimos hace un rato.

Ahora también existe otra manera de manejar el evento de un control, este se llama Actions que es muy parecido a lo que sería el patrón de comandos para WPF (aquí hay una pequeña guía para aprender sobre el patrón http://www.codeproject.com/KB/WPF/WpfCommandPatternApplied.aspx). Para usar este método modificaremos nuestra interface agregando un nuevo botón para que se vea así:
Y agregaremos una acción como lo hicimos con el outlet, teniendo en cuenta que cuando nos pregunte por el nombre del control, en la parte superior cambiemos Outlet por Action,:
Después agregamos para el mismo botón un outlet y guardamos, luego volvemos a MonoDevelop y en el mismo archivo ViewController.cs que modificamos hace un rato agregamos el siguiente código:
         partial void btnActionHola (MonoTouch.Foundation.NSObject sender)
         {
              this.btnHolaAction.SetTitle("Hola Mundo desde " + paises(),UIControlState.Normal) ;
         }


btnHolaAction es nuestro Outlet y btnActionHola es nuestra acción, esta forma de trabajar es un poco más parecida a la de los eventos de .NET.

Con eso me despido esperando que les sirva.

Comentarios

Entradas populares de este blog

Conectarse a un Web Service en PHP con WPF

Ejecutar comandos en el CMD de Windows desde C#

Usar Log4Net en un proyecto ASP.NET MVC