SlideShare uma empresa Scribd logo
1 de 32
6 - TABLE, NAVIGATION Y
     TABBAR CONTROLLERS
Curso de desarrollo de aplicaciones móviles para iPhone y iPad

                 endika.gutierrez@urbegi.com
                   alex.rayon@urbegi.com

                                      Urbegi Learning
                                         Contents
CONTENIDO


• Introducción

• TableView

• NavigationController

• TabBar
CONTENIDO


   • Introducción

• TableView

• NavigationController

• TabBar
INTRODUCCIÓN


• Conla primera versión del sistema iOS se introdujeron
 nuevas tendencias en el desarrollo de interfaces móviles que
 marcaron un antes y un después

• Parte
      de estos elementos fueron las TableView y el
 NavigationController
INTRODUCCIÓN 2



• Lamayor parte de las aplicaciones en iOS estan basadas en
 estos elementos

• Practicamente   todas las que incorpora el sistema las usan
CONTENIDO


• Introducción

   • TableView

• NavigationController

• TabBar
TABLE VIEW

• Las TableViewson un tipo de vista que permite visualizar
 diversos elementos en una lista ó tabla

• El
   uso más sencillo es el que se puede apreciar en la aplicación
 de contactos

• Sin
    embargo es empleado en otros muchos ejemplos más
 complejos, mensajes, etc
TABLE VIEW 2



• Las
    clase que gestiona las vistas en tabla es UITableView que
 hereda de UIView
TABLE VIEW 3

• Las TableView
              precisan de dos protocolos clave para su
 funcionamiento

  • El   dataSource UITableViewDataSource

  • El   delegate UITableViewDelegate

• La
   clase UITableViewController hereda de UIViewController e
 implementa estos dos protocolos
TABLE VIEW 4

• Otro    elemento clave de la vista en tabla son las celdas

• Estas
      estan compuestas de pequeñas vistas totalemente
 personalizables, en tamaños y visualización

• Las   celdas son de la clase UITableViewCell

  • Podemos    heredar de estas para personalizar su aspecto o
   utilizarlas directamente si son elementos más sencillos
TABLE VIEW
                 DATASOURCE


• El
   protocolo dataSource se encarga de proveer a la vista de
 todos los elementos necesarios

• Veamos   los principales métodos
TABLE VIEW
                      DATASOURCE 2
• Veamos      los principales métodos

@protocol UITableViewDataSource<NSObject>

@required

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath;

@optional

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;   // Si no se implementa 1

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;

// ...

@end
TABLE VIEW
                         DATASOURCE 3

• Los     dos métodos que deberemos implementar son:
•   - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;



    • Retorna       el número de celdas para una sección en concreto
•   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
    *)indexPath;



    • Retorna       la celda para un indice en concreto
TABLE VIEW
                 DATASOURCE 4

• Aparece   una nueva clase para referenciar un indice dentro de
 la tabla NSIndexPath

• Contiene   un entero para la sección y otro para la fila
 •   indexPath.section


 •   indexPath.row
TABLE VIEW
               DATASOURCE 5

• El
   funcionamiento de las tablas hace que las celdas que se
 vayan ocultando al avanzar el scroll se reutilicen para crear
 nuevas celdas

• Paraesto las celdas poseen un string como identificador del
 tipo de celda
TABLE VIEW
                      DATASOURCE 6
• Veamos un ejemplo de una implementación típica de un
 dataSource:
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Declaramos un identificador ya que solo habrá un tipo de celda
    static NSString *CellIdentifier = @"Cell";

    // Desencolamos una celda que no este en uso
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    // Si no podemos desencolar ninguna celda creamos una nueva
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
    }

    // Configuramos la celda
    cell.textLabel.text = @"Prueba";
    cell.detailTextLabel.text = @"Subtítulo";

    return cell;
}
TABLE VIEW
                         DELEGATE

• Elprotocolo delegate se encarga de lanzar los eventos a la
 clase que implemente el protocolo

       • Tipicamente   el controlador

• Veamos    los principlaes métodos
TABLE VIEW
                             DELEGATE 2
@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>

@optional

// Personalización de la celda

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath;

// Configuración de las alturas de las celdas

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

// Vistas para las cabeceras y pie de sección

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;

// ...

@end
TABLE VIEW
                     DELEGATE 3

• En   principio no requiere ningún método obligatorio

 • Sinembargo estos métodos permiten personalizar la
   apariencia y tamaños de las celdas

 • Además     de recibir los eventos que se produzcan en la tabla
CONTENIDO


• Introducción

• TableView

   • NavigationController

• TabBar
NAVIGATION
                  CONTROLLER


• El
   navigation controller permite generar navegaciones tipo
 push y pop de manera sencilla y eficiente

• Presente   en casi todo tipo de aplicaciones en navegación
NAVIGATION
                CONTROLLER
• Como  ejemplo podemos ver la aplicación de ajustes del
 sistema:
NAVIGATION
                 CONTROLLER 2


• Posee   un array de controladores que actua como una pila
    •   navigationController.viewControllers


• Parte   de un controlador raiz llamado rootController
NAVIGATION
                  CONTROLLER 3

• Paraapilar una nueva vista con una transición definida en el
 storyboard simplemente ejecutaremos desde el controlador:
 [self performSegueWithIdentifier:@"identificador" sender:self];


• Si
  por el contrario queremos apilar un controlador creado
 manualmente haremos:
 [self.navigationController pushViewController:controlador
 animated:YES];
NAVIGATION
                CONTROLLER 4



• Tambien   podemos desapilar los controladores con
 [self.navigationController popViewControllerAnimated:YES];
CONTENIDO


• Introducción

• TableView

• NavigationController

   • TabBar
TABBAR



• El TabBares posiblemente el elemento más clásico dentro de
 el desarrollo de interfaces

• Para   las vistas en pestañas
TABBAR 2



• Presente
         en un gran número de aplicaciones de escritorio y
 adaptado a los dipositivos móviles

• Se   puede ver en la aplicación de música, reloj y muchas otras
TABBAR 3
TABBAR 4


• Contieneun array de controladores con un controlador para
 cada una de sus pestañas

• Accesibles
        a través de
 tabBar.viewControllers
TABBAR 5



• Las
   pestañas se suelen definir en el storyboard del mismo
 modo que se gestionan los segues

• La   propia vista aplica el efecto a los botones
FIN

Mais conteúdo relacionado

Destaque (6)

Ios.s11
Ios.s11Ios.s11
Ios.s11
 
Ios.s13
Ios.s13Ios.s13
Ios.s13
 
Ios.s9
Ios.s9Ios.s9
Ios.s9
 
Ios.s12
Ios.s12Ios.s12
Ios.s12
 
Ios.s3
Ios.s3Ios.s3
Ios.s3
 
Ios.s2
Ios.s2Ios.s2
Ios.s2
 

Semelhante a iOS Table, Navigation y TabBar Controllers

Curso IOS - Intro2
Curso IOS - Intro2Curso IOS - Intro2
Curso IOS - Intro2Platzi
 
Curso iOS
Curso iOSCurso iOS
Curso iOSPlatzi
 
Android UC3M Sesión 2
Android UC3M Sesión 2Android UC3M Sesión 2
Android UC3M Sesión 2topoos
 
Introducción al desarrollo Android, Sesión 2
Introducción al desarrollo Android, Sesión 2Introducción al desarrollo Android, Sesión 2
Introducción al desarrollo Android, Sesión 2findemor
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitErick Camacho
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 
Android con conexion a BD
Android con conexion a BDAndroid con conexion a BD
Android con conexion a BDUPA
 
Capítulo 8, otras utilidades básicas en paginas html
Capítulo 8, otras utilidades básicas en paginas htmlCapítulo 8, otras utilidades básicas en paginas html
Capítulo 8, otras utilidades básicas en paginas htmlKathya Martinez
 
Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Eduardo Castro
 

Semelhante a iOS Table, Navigation y TabBar Controllers (20)

Sesion uno azuay
Sesion uno azuaySesion uno azuay
Sesion uno azuay
 
Vistas
VistasVistas
Vistas
 
Curso IOS - Intro2
Curso IOS - Intro2Curso IOS - Intro2
Curso IOS - Intro2
 
Intro demo3-i os
Intro demo3-i osIntro demo3-i os
Intro demo3-i os
 
Sq lite
Sq liteSq lite
Sq lite
 
Vistas
VistasVistas
Vistas
 
Curso iOS
Curso iOSCurso iOS
Curso iOS
 
Vistas
VistasVistas
Vistas
 
Conexion
ConexionConexion
Conexion
 
Android UC3M Sesión 2
Android UC3M Sesión 2Android UC3M Sesión 2
Android UC3M Sesión 2
 
Introducción al desarrollo Android, Sesión 2
Introducción al desarrollo Android, Sesión 2Introducción al desarrollo Android, Sesión 2
Introducción al desarrollo Android, Sesión 2
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKit
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Android con conexion a BD
Android con conexion a BDAndroid con conexion a BD
Android con conexion a BD
 
Deber
DeberDeber
Deber
 
Deber
DeberDeber
Deber
 
Capítulo 8, otras utilidades básicas en paginas html
Capítulo 8, otras utilidades básicas en paginas htmlCapítulo 8, otras utilidades básicas en paginas html
Capítulo 8, otras utilidades básicas en paginas html
 
Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Vistazo a SQL Server 2016
Vistazo a SQL Server 2016
 
Wenas wenas
Wenas wenasWenas wenas
Wenas wenas
 
Vistas
VistasVistas
Vistas
 

iOS Table, Navigation y TabBar Controllers

  • 1. 6 - TABLE, NAVIGATION Y TABBAR CONTROLLERS Curso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 2. CONTENIDO • Introducción • TableView • NavigationController • TabBar
  • 3. CONTENIDO • Introducción • TableView • NavigationController • TabBar
  • 4. INTRODUCCIÓN • Conla primera versión del sistema iOS se introdujeron nuevas tendencias en el desarrollo de interfaces móviles que marcaron un antes y un después • Parte de estos elementos fueron las TableView y el NavigationController
  • 5. INTRODUCCIÓN 2 • Lamayor parte de las aplicaciones en iOS estan basadas en estos elementos • Practicamente todas las que incorpora el sistema las usan
  • 6. CONTENIDO • Introducción • TableView • NavigationController • TabBar
  • 7. TABLE VIEW • Las TableViewson un tipo de vista que permite visualizar diversos elementos en una lista ó tabla • El uso más sencillo es el que se puede apreciar en la aplicación de contactos • Sin embargo es empleado en otros muchos ejemplos más complejos, mensajes, etc
  • 8. TABLE VIEW 2 • Las clase que gestiona las vistas en tabla es UITableView que hereda de UIView
  • 9. TABLE VIEW 3 • Las TableView precisan de dos protocolos clave para su funcionamiento • El dataSource UITableViewDataSource • El delegate UITableViewDelegate • La clase UITableViewController hereda de UIViewController e implementa estos dos protocolos
  • 10. TABLE VIEW 4 • Otro elemento clave de la vista en tabla son las celdas • Estas estan compuestas de pequeñas vistas totalemente personalizables, en tamaños y visualización • Las celdas son de la clase UITableViewCell • Podemos heredar de estas para personalizar su aspecto o utilizarlas directamente si son elementos más sencillos
  • 11. TABLE VIEW DATASOURCE • El protocolo dataSource se encarga de proveer a la vista de todos los elementos necesarios • Veamos los principales métodos
  • 12. TABLE VIEW DATASOURCE 2 • Veamos los principales métodos @protocol UITableViewDataSource<NSObject> @required - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; @optional - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; // Si no se implementa 1 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section; // ... @end
  • 13. TABLE VIEW DATASOURCE 3 • Los dos métodos que deberemos implementar son: • - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; • Retorna el número de celdas para una sección en concreto • - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; • Retorna la celda para un indice en concreto
  • 14. TABLE VIEW DATASOURCE 4 • Aparece una nueva clase para referenciar un indice dentro de la tabla NSIndexPath • Contiene un entero para la sección y otro para la fila • indexPath.section • indexPath.row
  • 15. TABLE VIEW DATASOURCE 5 • El funcionamiento de las tablas hace que las celdas que se vayan ocultando al avanzar el scroll se reutilicen para crear nuevas celdas • Paraesto las celdas poseen un string como identificador del tipo de celda
  • 16. TABLE VIEW DATASOURCE 6 • Veamos un ejemplo de una implementación típica de un dataSource: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // Declaramos un identificador ya que solo habrá un tipo de celda static NSString *CellIdentifier = @"Cell"; // Desencolamos una celda que no este en uso UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // Si no podemos desencolar ninguna celda creamos una nueva if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } // Configuramos la celda cell.textLabel.text = @"Prueba"; cell.detailTextLabel.text = @"Subtítulo"; return cell; }
  • 17. TABLE VIEW DELEGATE • Elprotocolo delegate se encarga de lanzar los eventos a la clase que implemente el protocolo • Tipicamente el controlador • Veamos los principlaes métodos
  • 18. TABLE VIEW DELEGATE 2 @protocol UITableViewDelegate<NSObject, UIScrollViewDelegate> @optional // Personalización de la celda - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; // Configuración de las alturas de las celdas - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section; // Vistas para las cabeceras y pie de sección - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section; // ... @end
  • 19. TABLE VIEW DELEGATE 3 • En principio no requiere ningún método obligatorio • Sinembargo estos métodos permiten personalizar la apariencia y tamaños de las celdas • Además de recibir los eventos que se produzcan en la tabla
  • 20. CONTENIDO • Introducción • TableView • NavigationController • TabBar
  • 21. NAVIGATION CONTROLLER • El navigation controller permite generar navegaciones tipo push y pop de manera sencilla y eficiente • Presente en casi todo tipo de aplicaciones en navegación
  • 22. NAVIGATION CONTROLLER • Como ejemplo podemos ver la aplicación de ajustes del sistema:
  • 23. NAVIGATION CONTROLLER 2 • Posee un array de controladores que actua como una pila • navigationController.viewControllers • Parte de un controlador raiz llamado rootController
  • 24. NAVIGATION CONTROLLER 3 • Paraapilar una nueva vista con una transición definida en el storyboard simplemente ejecutaremos desde el controlador: [self performSegueWithIdentifier:@"identificador" sender:self]; • Si por el contrario queremos apilar un controlador creado manualmente haremos: [self.navigationController pushViewController:controlador animated:YES];
  • 25. NAVIGATION CONTROLLER 4 • Tambien podemos desapilar los controladores con [self.navigationController popViewControllerAnimated:YES];
  • 26. CONTENIDO • Introducción • TableView • NavigationController • TabBar
  • 27. TABBAR • El TabBares posiblemente el elemento más clásico dentro de el desarrollo de interfaces • Para las vistas en pestañas
  • 28. TABBAR 2 • Presente en un gran número de aplicaciones de escritorio y adaptado a los dipositivos móviles • Se puede ver en la aplicación de música, reloj y muchas otras
  • 30. TABBAR 4 • Contieneun array de controladores con un controlador para cada una de sus pestañas • Accesibles a través de tabBar.viewControllers
  • 31. TABBAR 5 • Las pestañas se suelen definir en el storyboard del mismo modo que se gestionan los segues • La propia vista aplica el efecto a los botones
  • 32. FIN

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n