DESARROLLANDO PARA iOS
                         Gunther Vottela
                                    CEO
                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
                                    Herramientas




                                    Clases




                                    Panel de código
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
Variables y objetos comunes

• 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];
Ahora en el Mac..
Los UIViewController’s y Clases
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.
UIViewController’s

• Para agregar un UIViewController al proyecto:
  File / New File / UIViewController Subclass
  “marcar Whit .XIB file / Next / Colocar nombre /
  Finish.
Ahora en el Mac..
Los UIViewController’s

• 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];
  }
Clases

• 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{}
Los UIViewController’s

• Metodos – IBAction:


• Los IBAction son metodos que normalmente se
  releacionan a objetos del interface “Botones”

 .h
 -(IBaction)mimetodo;
  .m
 -(IBaction)mimetodo{}
Clases

• Metodos – IBAction:


• Para invocar un metodo dentro de una clase se
  utiliza la instrucción self, ejemplo.

  [self mimetodo];

  [self mimetodo:@”parametro”];
Los UIViewController’s

• Metodos de vista:


• -(void)viewDidLoad{}


• - (void)viewWillAppear:(BOOL)animated{}


• -(void)viewDidUnload{}


• -(void)dealloc {}
Ahora en el Mac..
UITableViewControllers
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
Ahora en el Mac..
Vistas Modales y Push
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];
Ahora en el Mac..
@gunthervottela




Web Site

Sesion uno azuay

  • 1.
    DESARROLLANDO PARA iOS Gunther Vottela CEO KUBO Mobile Applications @kubomobile - @gunthervottela
  • 2.
  • 3.
    Antes de comenzar…. •Que es lo quiero y que me gustaria desarrollar • Cual es mi target • Diseño • Experiencia
  • 4.
    Que requiero paradesarrollar 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.
  • 5.
    Que requiero paradesarrollar 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.
  • 6.
    Las herramientas paradesarrollar • 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.
  • 7.
    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.
  • 8.
    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.
  • 9.
    Xcode – SDKambiente Objetos de proyecto Herramientas Clases Panel de código
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
    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!
  • 15.
    Mi primer app •Abrir Xcode. • Clic en File / New Proyect y seleccionamos el tipo de proyecto.
  • 16.
  • 17.
    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
  • 18.
  • 19.
  • 20.
    Que es elstack de navegación • Es la logica y componentes de navegación que se crea entre los diferentes vistas de un app.
  • 21.
    Que es elstack de navegación • Navigation Bar
  • 22.
  • 23.
    Variables y objetoscomunes • Tipos de datos: • Nsstring • Int “primitivo” • NSInteger • BOOL • Char
  • 24.
    Variables y objetoscomunes • Objetos de datos: • NSArray • NSmutableArray • NSMutableDictionary • NSDate • NSImage • NSMutableString • NSURL
  • 25.
    Variables y objetoscomunes • Objetos de interface: • UiView • UIButton • UILabel • UIImageView • UIImage • UICalendar • UITextField • UIViewScroll
  • 26.
    Variables y objetoscomunes • Declaraciones: • Nstring *micadena = @”aaaa”; • Int miInt = 1; • BOOL miBool = TRUE; • NSArray *miarray = [NSArray arrayWithObjects: @”juan", @”pedro", @"Luciano", @"Silvia", nil ];
  • 27.
    Variables y objetoscomunes • 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
  • 28.
    Variables y objetoscomunes • Declaraciones: • NSMutableArray *array = [[NSMutableArray alloc] init]; • NSMutableDictionary *midiccionario = [[NSMutableDictionary alloc] init]; • UIView *MiVista = [[UIView alloc] init]; [MiVista Release];
  • 29.
  • 30.
  • 31.
    Los UIViewController’s yClases • 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.
  • 32.
    UIViewController’s • Para agregarun UIViewController al proyecto: File / New File / UIViewController Subclass “marcar Whit .XIB file / Next / Colocar nombre / Finish.
  • 33.
  • 34.
    Los UIViewController’s • Navegandoentre 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];
  • 35.
    Los UIViewController’s • Navegandoentre 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]; }
  • 36.
    Clases • 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{}
  • 37.
    Los UIViewController’s • Metodos– IBAction: • Los IBAction son metodos que normalmente se releacionan a objetos del interface “Botones” .h -(IBaction)mimetodo; .m -(IBaction)mimetodo{}
  • 38.
    Clases • Metodos –IBAction: • Para invocar un metodo dentro de una clase se utiliza la instrucción self, ejemplo. [self mimetodo]; [self mimetodo:@”parametro”];
  • 39.
    Los UIViewController’s • Metodosde vista: • -(void)viewDidLoad{} • - (void)viewWillAppear:(BOOL)animated{} • -(void)viewDidUnload{} • -(void)dealloc {}
  • 40.
  • 41.
  • 42.
    UITableViewControllers • Es unode 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”.
  • 43.
    UITableViewControllers • Es unode 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”.
  • 44.
    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
  • 45.
    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.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
    Vistas Modales yPush • 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.
  • 51.
    Vistas Modales yPush • 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];
  • 52.
    Vistas Modales yPush • Push: [self.navigationController popViewControllerAnimated:YES]; • Modal: [self dismissModalViewControllerAnimated:YES];
  • 53.
  • 54.