Este documento presenta los conceptos fundamentales del paradigma MVC, los protocolos y las vistas en el desarrollo de aplicaciones móviles para iOS. Explica que MVC separa la aplicación en tres capas lógicas: modelo, vista y controlador. También describe cómo los protocolos permiten la comunicación unidireccional entre objetos y las clases de vista principales como UIView. Por último, resume los métodos de comunicación entre vistas y controladores como target-action y el uso de protocolos delegate y dataSource.
1. 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
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
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
• 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
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
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...
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