4 - PROTOCOLOS Y VISTAS
Curso de desarrollo de aplicaciones móviles para iPhone y iPad


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

                                      Urbegi Learning
                                         Contents
CONTENIDO


• Paradigma    Model-View-Controller

• Protocolos

• Vistas

• Comunicación Vistas-Controlador
CONTENIDO


    • Paradigma   Model-View-Controller

• Protocolos

• Vistas

• Comunicación Vistas-Controlador
PARADIGMA MVC

• Paradigma    de programación para el desarrollo de interfaces

• Se   basa en separar las trés cápas lógicas

 • Datos     - Modelo

 • Comportamiento        - Controlador

 • Visualización    - Vista
PARADIGMA MVC 2


• De esta manera los objetos dentro de Cocoa se dividen en
 estas tres categorias

• Lacomunicación debe fluir entre el modelo y el controlador y
 entre el controlador y la vista
PARADIGMA MVC 3

         Controlador

Modelo                 Vista
CONTENIDO


• Paradigma   Model-View-Controller

    • Protocolos

• Vistas

• Comunicación Vistas-Controlador
PROTOCOLOS


• Los
    protocolos representan uno de los principales sistemas de
 comunicación entre objetos en Objective-C

• Permiteuna comunicación unidireccional entre dos objetos sin
 que el emisor conozca al receptor

• Define   un conjunto de métodos que la clase los implementa
PROTOCOLOS 2

• Es   análogo a los interface en Java

  • Con algunas diferencias, ya que los métodos un protocolo
    pueden ser implementados o no

• Evita   la herencia multiple

• Losobjetos pueden implementar tantos protocolos como
 deseen

  • Sin   embargo solo pueden heredar de una clase
PROTOCOLOS 3

• Lasintaxis es similar a la declaración de una interfaz de una
 clase:
 @protocol UITextFieldDelegate <NSObject>
 @optional
 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to
 disallow editing.
 - (void)textFieldDidBeginEditing:(UITextField *)textField;           // became first
 responder
 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField;          // return YES to
 allow editing to stop and to resign first responder status. NO to disallow the
 editing session to end
 - (void)textFieldDidEndEditing:(UITextField *)textField;             // may be called
 if forced even if shouldEndEditing returns NO (e.g. view removed from window) or
 endEditing:YES called
 // ...
 @end
PROTOCOLOS 4


• La    definición de un protocolo es similar a
 @protocol NombreDelProtocolo <ClaseQuePuedeImplementarlo>

 // Definición de los métodos


 @end
PROTOCOLOS 5


• También    se pueden incluir métodos opcionales
 @protocol NombreDelProtocolo <ClaseQuePuedeImplementarlo>

 @optional
 // Definición de los métodos opcionales


 @end
PROTOCOLOS 6


• Las   clases pueden implementar protocolos
 @interface NombreDeLaClase <Protocolo1, Protocolo2, Protocolo2...>


 @end
CONTENIDO


• Paradigma    Model-View-Controller

• Protocolos

   • Vistas

• Comunicación Vistas-Controlador
VISTAS



• Las   vistas son el elemento de visualización por defecto

• Se   debe abstraer de los modelos y controladores
VISTAS 2


• La   clase base de toda vista es UIView

• La
   clase UIView por sí sola actua únicamente como un
 contenedor de vistas

  • Similar   al tag <div> de html
VISTAS 3


• Heredando   de UIView podemos personalizar las vistas

• iOS contine multitud de vistas, desde etiquetas UILabel,
 textfields UITextField hasta mapas MKMapView, contenedores web
 UIWebView...
CONTENIDO


• Paradigma    Model-View-Controller

• Protocolos

• Vistas

    • Comunicación Vistas-Controlador
COMUNICACIÓN
          VISTA-CONTROLADOR


• Segúnel paradigma MVC la vista no debería conocer ni al
 controlador ni al modelo

• Porlo tanto ¿Cómo se comunican las vistas y los
 controladores?
COMUNICACIÓN
              VISTA-CONTROLADOR 2

• El   sistema más sencillo es el denominado target-action

  • Se    indica a la vista quien va a ser el objeto que reciba la
       acción y el método
       •   [_button addTarget:self
                       action:@selector(buttonClicked:)
             forControlEvents:UIControlEventAllEvents];
COMUNICACIÓN
       VISTA-CONTROLADOR 3
• Cuando la comunicación es más compleja se emplean
 protocolos

 • Generalmente   son los delegate y los dataSource.

   • Losprotocolos Delegate proporcionan una lista métodos
    con los eventos que se puedan producir

   • Los
       protocolos DataSource proporcionan una lista
    métodos para proveer de información a la vista
FIN

Ios.s4

  • 1.
    4 - PROTOCOLOSY VISTAS Curso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 2.
    CONTENIDO • Paradigma Model-View-Controller • Protocolos • Vistas • Comunicación Vistas-Controlador
  • 3.
    CONTENIDO • Paradigma Model-View-Controller • Protocolos • Vistas • Comunicación Vistas-Controlador
  • 4.
    PARADIGMA MVC • Paradigma de programación para el desarrollo de interfaces • Se basa en separar las trés cápas lógicas • Datos - Modelo • Comportamiento - Controlador • Visualización - Vista
  • 5.
    PARADIGMA MVC 2 •De esta manera los objetos dentro de Cocoa se dividen en estas tres categorias • Lacomunicación debe fluir entre el modelo y el controlador y entre el controlador y la vista
  • 6.
    PARADIGMA MVC 3 Controlador Modelo Vista
  • 7.
    CONTENIDO • Paradigma Model-View-Controller • Protocolos • Vistas • Comunicación Vistas-Controlador
  • 8.
    PROTOCOLOS • Los protocolos representan uno de los principales sistemas de comunicación entre objetos en Objective-C • Permiteuna comunicación unidireccional entre dos objetos sin que el emisor conozca al receptor • Define un conjunto de métodos que la clase los implementa
  • 9.
    PROTOCOLOS 2 • Es análogo a los interface en Java • Con algunas diferencias, ya que los métodos un protocolo pueden ser implementados o no • Evita la herencia multiple • Losobjetos pueden implementar tantos protocolos como deseen • Sin embargo solo pueden heredar de una clase
  • 10.
    PROTOCOLOS 3 • Lasintaxises similar a la declaración de una interfaz de una clase: @protocol UITextFieldDelegate <NSObject> @optional - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // return NO to disallow editing. - (void)textFieldDidBeginEditing:(UITextField *)textField; // became first responder - (BOOL)textFieldShouldEndEditing:(UITextField *)textField; // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end - (void)textFieldDidEndEditing:(UITextField *)textField; // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called // ... @end
  • 11.
    PROTOCOLOS 4 • La definición de un protocolo es similar a @protocol NombreDelProtocolo <ClaseQuePuedeImplementarlo> // Definición de los métodos @end
  • 12.
    PROTOCOLOS 5 • También se pueden incluir métodos opcionales @protocol NombreDelProtocolo <ClaseQuePuedeImplementarlo> @optional // Definición de los métodos opcionales @end
  • 13.
    PROTOCOLOS 6 • Las clases pueden implementar protocolos @interface NombreDeLaClase <Protocolo1, Protocolo2, Protocolo2...> @end
  • 14.
    CONTENIDO • Paradigma Model-View-Controller • Protocolos • Vistas • Comunicación Vistas-Controlador
  • 15.
    VISTAS • Las vistas son el elemento de visualización por defecto • Se debe abstraer de los modelos y controladores
  • 16.
    VISTAS 2 • La clase base de toda vista es UIView • La clase UIView por sí sola actua únicamente como un contenedor de vistas • Similar al tag <div> de html
  • 17.
    VISTAS 3 • Heredando de UIView podemos personalizar las vistas • iOS contine multitud de vistas, desde etiquetas UILabel, textfields UITextField hasta mapas MKMapView, contenedores web UIWebView...
  • 18.
    CONTENIDO • Paradigma Model-View-Controller • Protocolos • Vistas • Comunicación Vistas-Controlador
  • 19.
    COMUNICACIÓN VISTA-CONTROLADOR • Segúnel paradigma MVC la vista no debería conocer ni al controlador ni al modelo • Porlo tanto ¿Cómo se comunican las vistas y los controladores?
  • 20.
    COMUNICACIÓN VISTA-CONTROLADOR 2 • El sistema más sencillo es el denominado target-action • Se indica a la vista quien va a ser el objeto que reciba la acción y el método • [_button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventAllEvents];
  • 21.
    COMUNICACIÓN VISTA-CONTROLADOR 3 • Cuando la comunicación es más compleja se emplean protocolos • Generalmente son los delegate y los dataSource. • Losprotocolos Delegate proporcionan una lista métodos con los eventos que se puedan producir • Los protocolos DataSource proporcionan una lista métodos para proveer de información a la vista
  • 22.