Programar para Iphone desde cuatro. Controllers. Nivel Cantinflas.

11 July 2008

¡Me encanta Cantinflas!

En este capítulo aprenderemos a crear y asociar controladores. Explicaré básicamente en que consisten y para que sirven. Pero antes de seguir deberiais haber hecho los anteriores tutoriales de esta serie. Me estoy refiriendo a los niveles Tarzán, Piolín, Barragán y Luis Aragonés.


Ante todo hay que tener en mente cuales son los que existen. Pues bien, tenemos:


- ViewController. Gestiona vistas.

- TableViewController. Gestiona una tabla de datos.

- NavigationController. Gestiona un navegador de vistas.

- TabBarController. Gestiona una botonera.

- ImagePickerController. Gestiona una colección de imágenes.

Fundamentalmente nos sirven para tener nuestro código separado y bien ordenado. Cada controlador desarrollará los métodos necesarios para controlar la parte del programa que le corresponda. Basandome en una TableViewController explicaré como crear controladores y asociarlos a nuestro programa principal.



Crear un controlador significa que tendremos que tener otros dos archivos. Otro .h y otro .m en la carpeta de classes. Para crearlos presionaremos con el botón derecho del ratón sobre la carpeta classes y seleccionaremos la opción Add/New file... Después elegiremos el tipo de controlador que queremos insertar. En este caso UITableViewController subclass. Le asignamos un nombre (RootViewController) y nos creará los archivos necesarios en la carpeta classes.


El archivo.h quedará de la siguiente manera:

#import <UIKit/UIKit.h>

@interface RootViewController : UITableViewController
{


//Array datasource de la TableView

NSMutableArray *DATOS_TABLA;

}
@property (nonatomic, retain) NSMutableArray *DATOS_TABLA;
- (void)addElemento:(id)sender;
- (void)borrarElemento:(id)sender;
- (void)seleccionarElemento:(id)sender;


@end

Y en el archivo.m tendremos que escribir lo siguiente. Los métodos los he obviado, pero deberán estar como es lógico:


#import "RootViewController.h"
#import "AppDelegate.h"
@implementation RootViewController
@synthesize DATOS_TABLA; //datasource del TableView


//métodos.

@end

Como podeis ver tenemos que importar el archivo.h de nuestra AppDelegate.


Ya tenemos creada una clase que es un controlador de una UITableView. Ahora tenemos que informar a nuestra AppDelegate que esta clase existe y también que hay uno o varios objetos de esa clase. Lo haremos en AppDelegate.h:


#import <UIKit/UIKit.h>

@class RootViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate>

{

IBOutlet RootViewController *TABLEVIEW_CONTROLLER;

}

@property (nonatomic, retain) RootViewController *TABLA_CONTROLLER;
@end

Como os podeis imaginar esto no funcionaría si no hemos importado en ningún sitio de nuestra AppDelegate la clase del TableViewController. Esto se hará en el archivo AppDelegate.m:


#import "AppDelegate.h"
#import "RootViewController.h"

@implementation AppDelegate

@synthesize window;
@synthesize TABLEVIEW_CONTROLLER;

//métodos

@end

Para utilizar cualquier método de nuestro controlador desde AppDelegate tendremos que utilizar una sentencia como la siguiente: [TABLEVIEW_CONTROLLER addElemento: sender];.


Si lo que queremos es ejecutar un método de nuestro controlador dentro de otro método de nuestro mismo controlador lo haremos de la siguiente forma: [self addElemento: sender];.



Casi se me olvida, hay que vincularlo mediante el interface builder. Para ello hacemos doble click en el archivo.xib y en la ventana MainWindow.xib añadimos un elemento Table View Controller (de los naranjas). Una vez añadido, lo seleccionamos y en la ventana inpector en la pestaña identity donde dice class elegimos RootViewController. Asi, ese objeto para a ser un controlador de la clase que hemos creado.


Previamente tendriamos que tener creado un alemento UITableView, que es sobre el que se mostrarán los datos. Vincularemos desde el controlador a la UITableView que teniamos creada mediante la tecla control, y elegiremos view. Así estamos diciendo que los datos del controlador se muestren en esa UITableView. También vincularemos desde AppDelegate a el controlador y elegiremos TABLEVIEW_CONTROLLER.


Aquí terminamos la explicación sobre controladores. Tened presente que aunque el ejemplo haya sido implementado para un TableView es extensible para cualquier otro tipo de controlador.


Otros artículos de la serie:


Programar para Iphone desde cero. UIButton. Nivel Tarzán.


Programa para Iphone desde uno. UIView. Nivel Piolín.


Programar para Iphone desde dos. UITextField. Nivel Barragán.


Programar para Iphone desde tres. NSMutableArray. Nivel Luis Aragonés.

Programar para Iphone desde cuatro. Controllers. Nivel Cantinflas.

Comentarios recientes

  • 08 July 2009
    alexandre Garcia Chicano dijo:

    Para los que no lo entiendan, que hagan el HelloWord que te da apple para empezar, que está bien. Yo no sé si lo entiendo..pero mi conclusión es que nos sirve para tenerlo todo más ordenado, ahora bien, hasta que punto es imprescindible usarlos? Un ejemplo de aplicación que sea necesario 100% me sería perfecto. Una aplicación que tenga muchas transiciones...? Saludos y buenisimoS trabajoS pequenionoa

  • 11 June 2009
    ANgel dijo:

    Yo quiero decir que a mi me compila perfectamente, pero la verdad es que no hay q copiar el codigo tal cual y ale a ver que pasa, mi recomendacion es irlo haciendo poco a poco y ir compilando y asi ir depurando a la vez que se avanza el ejercicio. Aun asi, estoy bastante interesado en este tema de controllers y no acabo de entenderlo muy bien la verdad...supongo que me falta algo en el tutorial para ver el funcionamiento del controlador, intentare acoplarlo al nivel anterior del array y ver si asi le saco partido...y os pongo el codigo x aki. Un saludo y muy buen trabajo

  • 07 May 2009
    PabloAM dijo:

    Estoy con los otros usuarios. Por lo que he entendido este nuevo control (No lo he escrito solo he leido el tutorial) sirve para mostrar datos guardados en una tabla y esos datos de donde los saca? De una base de datos de un fichero? Este tutorial flojea delante de los otros que tienen una buena explicación. Pero igualmente se agradece :) Un saludo

  • 23 April 2009
    Gino dijo:

    Creo que a este articulo está bastante bueno, eso si creo que le faltó un poco mas detalles, el ejemplo al menos podría tener algo que mostrar, no sé un texto... cualquier cosa no sólo un pantalla blanca. Por cierto chicos, no tuve problemas al compilar el ejemplo.... no dejen de publicar articulos... Muy Buen trabajo, Suerte y Saludos desde Chile.

  • 08 April 2009
    Echalotte dijo:

    Coincido con Miguel Perez, este ejemplo no lo entendí. Me parecieron excelentes los artículos cero, uno, dos y tres pero este cuatro no se entiende! Antonio, para mi es importante que un ejemplo compile, sino no te das cuenta si las cosas no andan por error tipeo o que el ejemplo está explicado muy "por encima" y asi es dificil aprender. Pequenionoa por favor explica mejor este ejemplo, como hiciste con los otros que son muy buenos, tu puedes.

  • 02 April 2009
    Antonio dijo:

    Hola Miguel Agradezco tu participación en todos los artículos del Blog que consideres oportunos, pero has de tener en cuenta que no se aprende mejor ni más rápido, por tener todo un proyecto en tu ordenador y que compile sin problemas. Mi recomendación es que empiezes desde un nivel más básico, desde los primeros artículos del Blog, y que lo acompañes con dudas más concretas en el Foro. Un saludo.

  • 02 April 2009
    Miguel Perez dijo:

    orale... este ejemplo no lo entendí... además de que no lo pude correr... arroja muchos errores.... alguién puede ayudarme o enviarme el programa a mi correo... gracias....

  • 15 February 2009
    pepersview dijo:

    Es posible lanzar otra aplicación? Es decir desde mi codigo poder ejecutar la aplicación youtube del iphone:) Gracias!!

  • 05 February 2009
    patricio dijo:

    hola... me encantaria aprender a programar aplicaciones para iphone... si tienen ahi un pata burros me encantaria tenerlo mi correo es el siguiente pahermoso@hotmail.com gracias

Deja un comentario

Escrito por:

Administrador

Programar desde cero
NivelProgramarCantinflasCuatro

Utilizamos cookies propias y de terceros para mantener la sesión o sus preferencias, recopilar estadísticas y proporcionar contenidos conforme a sus intereses. Si continua navegando, utiliza los servicios de la web o pulsa el botón, está aceptando su instalación y el uso que hacemos de ellas. Puede obtener más información sobre como revocar su consentimiento o cómo cambiar la configuración en este enlace.