Post on 13-Jun-2015
DESARROLLANDO PARA iOS
Gunther VottelaCEO
KUBO Mobile Applications@kubomobile - @gunthervottela
INTRODUCCIÓN
Antes de comenzar….
• Que es lo quiero y que me gustaria desarrollar
• Cual es mi target
• Diseño
• Experiencia
Que requiero para desarrollar en iOS?
• Un Mac!
• Inscribirse como developers en apple.developer.com.
• Descargar el Xcode “SDK” para desarrollar en iOS, en Lion atraves del MacStore.
• Buscar comunidades de soporte online – leer la documentación – Tener equipos de Test.
Que requiero para desarrollar en iOS?
• iOS es la plataforma, pero el lenguaje de desarrollo es Objetive-c.
• Según wikipedia…Es un lenguaje de programación orientado a objetos creado como un superconjunto de C.
Las herramientas para desarrollar
• Xcode es el SDK de Apple para el desarrollo de apps tanto para Mac como para iOS.
• Actualmente se encuentra en la versión 4.2, con soporte para iOS 5.0.
• Dependiendo las caracteristicas que se quieran utilizar en el app y soporte para devices se debe seleccionar la versión de Xcode.
Xcode - Versiones
• Versiones recomendadas.
• 4.2 -> Mac`s Intel, incluye soporte para iOS 5.0, Lion 10.7 OS, internamente incluye internamente las herramientas de analisis y depuración.
• 3.2.5 -> Mac’s Intel, Incluye soporte para iOS 3.1.3, Snow Leopard, herramientas de analisis y depuración independientes.
Conjunto de Herramientas
• Xcode = Ambiente de desarrollo.
• Interface Builder = Construcción visual de vistas y objetos.
• Instruments = Analisis de memoria, objetos, performance, etc.
• DashCode = Utilitario.
Xcode – SDK ambiente
Objetos de proyecto
Panel de código
Clases
Herramientas
Interface Builder - ambiente
Interface Builder - ambiente
Ahora en el Mac..
Mi primer App
Mi primer app
• Una idea.
• Planifiquen en papel el diseño base y la navegación del app.
• Revisen apps que puedan ser similares
• Cuidado con los UI Guidelines!
Mi primer app
• Abrir Xcode.
• Clic en File / New Proyect y seleccionamos el tipo de proyecto.
Mi primer app
Mi primer app
• Contenido del proyecto:
• AppDelegate -> Archivo de inicio del app.• Archivos .h -> Headers de clases• Archivos .m -> Implementaciones de clases• Archivos .XIB -> Archuvos de UI• Archivo .plist -> Archivos de configuración
Ahora en el Mac..
Stack de Navegación
Que es el stack de navegación
• Es la logica y componentes de navegación que se crea entre los diferentes vistas de un app.
Que es el stack de navegación
• Navigation Bar
Variables y objetos comunes
Variables y objetos comunes
• Tipos de datos:
• Nsstring• Int “primitivo”• NSInteger• BOOL• Char
• Objetos de datos:
• NSArray• NSmutableArray• NSMutableDictionary• NSDate• NSImage• NSMutableString• NSURL
Variables y objetos comunes
• Objetos de interface:
• UiView• UIButton• UILabel• UIImageView• UIImage• UICalendar• UITextField• UIViewScroll
Variables y objetos comunes
• Declaraciones:
• Nstring *micadena = @”aaaa”;• Int miInt = 1;• BOOL miBool = TRUE;• NSArray *miarray = [NSArray
arrayWithObjects: @”juan", @”pedro", @"Luciano", @"Silvia", nil];
Variables y objetos comunes
• Alloc – init - Release:
• Alloc = Es la solicitud de reserva de memoria del objeto.
• Init = Es la solcitud de inicializar el objeto.
• Release = Es la solicitud de liberación de memoria
Variables y objetos comunes
• Declaraciones:
• NSMutableArray *array = [[NSMutableArray alloc] init];
• NSMutableDictionary *midiccionario = [[NSMutableDictionary alloc] init];
• UIView *MiVista = [[UIView alloc] init]; [MiVista Release];
Variables y objetos comunes
Ahora en el Mac..
Los UIViewController’s y Clases
• Un UiViewController es unas clase que importa el framework UIKit en el header y hereda de la clase UiViewController, en la mayoria de los casos tiene un archivo .xib relacionado, normalmente son tres archivos .h, .m y .xib.
• Una clase en un conjunto de archivos, .h y .m que importa el framework Foundation en el header y hereda de la clase NSObject.
Los UIViewController’s y Clases
• Para agregar un UIViewController al proyecto: File / New File / UIViewController Subclass “marcar Whit .XIB file / Next / Colocar nombre / Finish.
UIViewController’s
Ahora en el Mac..
• Navegando entre controladores, hacia adelante: En la implementación importar el controlador…
Import “Controlador2 .h”
Controlador2 *nextController = [[Controlador2 alloc] initWithNibName:@"Controlador2 " bundle:nil];nextController.hidesBottomBarWhenPushed=YES;[self.navigationController pushViewController:nextController animated:YES];[nextController metodo:@”parametro”];
[nextController release];
Los UIViewController’s
• Navegando entre controladores, hacia atras: Usando el navigation.
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc]
init];temporaryBarButtonItem.title = @"Volver";self.navigationItem.backBarButtonItem = temporaryBarButtonItem;[temporaryBarButtonItem release];
Acción custom.
- (void)volver:(id)sender{[self.navigationController popViewControllerAnimated:YES];
}
Los UIViewController’s
• Metodos – IBAction:
• Todos los metodos son funciones que permiten recibir N parametros pero retornar un solo objeto.
.h
-(int)mimetodo: (nsstring *)texto;.m
-(int)mimetodo: (nsstring *)texto{}
Clases
• Metodos – IBAction:
• Los IBAction son metodos que normalmente se releacionan a objetos del interface “Botones”
.h -(IBaction)mimetodo;
.m -(IBaction)mimetodo{}
Los UIViewController’s
• Metodos – IBAction:
• Para invocar un metodo dentro de una clase se utiliza la instrucción self, ejemplo.
[self mimetodo];
[self mimetodo:@”parametro”];
Clases
• Metodos de vista:
• -(void)viewDidLoad{}
• - (void)viewWillAppear:(BOOL)animated{}
• -(void)viewDidUnload{}
• -(void)dealloc {}
Los UIViewController’s
Ahora en el Mac..
UITableViewControllers
• Es uno de los objetos mas usandos en iOS para mostrar información al usuario de forma de lista.
• Algunos objetos como el UITableViewController usan el delegate para recibir y enviar mensajes entre sus metodos.
• Las celdas estandar permiten el uso de un titulo, detalle, imagen y boton “disclousure”.
UITableViewControllers
• Es uno de los objetos mas usandos en iOS para mostrar información al usuario de forma de lista.
• Algunos objetos como el UITableViewController usan el delegate para recibir y enviar mensajes entre sus metodos.
• Las celdas estandar permiten el uso de un titulo, detalle, imagen y boton “disclousure”.
UITableViewControllers
• -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{}
• -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{}
• -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{}
• -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewControllers
• Se puede crear celdas personalizadas para aumentar la cantidad de informacion y mejorar el diseño en las celdas, creando una clase tipo UITableViewCell y luego relacionandola a la celda en su fase construcción.
• Se debe relacionar, el delegate y datasource para que asi pueda recibir los datos.
• Solo se puede colocar uno por vista.
UITableViewControllers
UITableViewControllers
UITableViewControllers
Ahora en el Mac..
Vistas Modales y Push
• Modal y push son dos formas diferentes de presentación de los UIViewControllers.
• En el caso de push se mantiene la navegación y se respetan los elementos de acceso a otras vistas como los TabBar.
• En el caso de los Modal, se hace una presentación full screen de la vista.
Vistas Modales y Push
• Push:
Controlador2 *nextController = [[Controlador2 alloc] initWithNibName:@"Controlador2 " bundle:nil];[self.navigationController pushViewController:nextController animated:YES];
[nextController release];
• Modal:PopOverControllerContents *popContents = [[PopOverControllerContents alloc] initWithNibName:@"PopOverControllerContents" bundle:[NSBundle mainBundle]]; [self presentModalViewController:popContents animated:YES];
Vistas Modales y Push
• Push:[self.navigationController popViewControllerAnimated:YES];
• Modal: [self dismissModalViewControllerAnimated:YES];
Vistas Modales y Push
Ahora en el Mac..
Web Site
@gunthervottela