230 likes | 465 Views
Curso de Iniciación a la Programación del iPhone SDK con Objective-C. Controladores – La lógica de la aplicación. Moncada, 9 de Julio de 2010. Controladores. ¿Qué es? Punto de partida Ciclo de vida initWithNibName viewDidLoad viewWillAppear viewWillDisappear viewDidUnload
E N D
Curso de Iniciación a la Programación del iPhone SDK con Objective-C Controladores – La lógica de la aplicación Moncada, 9 de Julio de 2010
Controladores ¿Qué es? Punto de partida Ciclo de vida initWithNibName viewDidLoad viewWillAppear viewWillDisappear viewDidUnload Creando controladores e interfaces Conectando la interfaz y su controlador
¿Qué es un controlador? Funciones Carga la vista y los valores iniciales Recibe los eventos producidos en la interfaz Gestiona autorotación (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation Libera los recursos relacionados con la vista Tipos Contenedores: UINavigationController y UITabBarController Personalizados: Tu subclase de UIViewController Modales (aparecen en pantalla de una manera especial)
UIViewController ¿Qué puede contener? Variables de tipo del modelo de datos Variables 'outlets' (IBOutlet) para conectar con objetos de la vista Acciones 'outlets' (IBAction) para conectar con objetos de control de la vista Otros métodos auxiliares
Ciclo de vida de un controlador • Ciclo de vida • initWithNibName • Configuración no relacionadas con la vista • viewDidLoad • Valores iniciales (relacionados con la vista) • viewWillAppear • La vista va a aparecer • viewWillDisappear • Guardar el estado • viewDidUnload • Liberar recursos
Creando controladores e interfaces Como hemos dicho: 1 vista → 1 controlador (común) ¿Cómo componemos una aplicación con varias vistas? Usando controladores especiales UINavigationController UITabBarController
UINavigationController Sirve para representar datos jerarquizados Gestiona la barra de navegación (UINavigationBar) Botón 'Atrás' Título de la vista actual Otros controles Pila de controladores de vistas
UINavigationController Métodos importantes: Push para añadir un controlador de vista a la pila - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; Pop para eliminar un controlador de vista de la pila - (UIViewController *)popViewControllerAnimated:(BOOL)animated; Inicializar toda la pila de controladores (iPhone OS3.0) - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated;
UINavigationController Estructura fichero NIB
UINavigationController Compartiendo datos entre vistas (Data flow) - Parámetros entrada en controlador de vista [[DetailViewController alloc] initWithPerson:(Person *)person]; - Para comunicación con 'vista padre' Protocolos-> delegación
UINavigationItem Todos lo controladores tiene una variable UINavigationItem Personaliza la barra superior cuando el controlador está arriba en la pila Estructura NSString *title; UIBarButtonItem *leftBarButtonItem y *rightBarButtonItem UIView *titleView; NSString *backButtonTitle;
UINavigationItem Personalizando la barra de navegación Configurando un botón derecho personalizado: UIBarButtonItem *izqBoton = [UIBarButtonItem alloc]; [izqBoton initWithTitle:@”Dale!” style: UIBarButtonItemStyleBordered target:self action:@selector(metodoBoton:)]; self.navigationItem.leftBarButtonItem =izqBoton; [izqBoton release];
UITabBarController Sirve para separar la aplicación en varios modos de ejecución Utiliza una barra de pestañas (TabBar) para los distintos modos A diferencia con UINavigationController, UITabBarController almacena las vistas en un array.
UITabBarController Estructura fichero NIB
UITabBarItem • Todos lo controladores tiene una variable UITabBarItem • Personaliza la barra inferior de la aplicación • Estructura • NSString *title; • UIImage *image; • NSString *badgeValue; • Personalizando UITabBarItem UITabBarItem *item = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:0]; self.tabBarItem = item; [item release];
Bibliografía “View Controller Programming Guide for iPhone OS” Ejemplos en código http://developer.apple.com