En este tema, aprenderemos sobre los componentes fundamentales de la interfaz de usuario en iOS: las vistas y los controladores de vista. Estos elementos son esenciales para construir aplicaciones interactivas y visualmente atractivas.
- Introducción a las Vistas
 
¿Qué es una Vista?
Una vista (UIView) es un objeto rectangular en la pantalla que puede dibujar contenido y responder a eventos de usuario. Las vistas son los bloques de construcción básicos de la interfaz de usuario en iOS.
Tipos de Vistas Comunes
- UILabel: Muestra texto estático.
 - UIButton: Un botón que el usuario puede tocar.
 - UIImageView: Muestra una imagen.
 - UITextField: Un campo de texto editable.
 
Ejemplo Básico de una Vista
// Crear una vista UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)]; myView.backgroundColor = [UIColor blueColor]; // Agregar la vista a la vista principal [self.view addSubview:myView];
En este ejemplo, creamos una vista azul de 200x200 píxeles y la agregamos a la vista principal del controlador de vista.
- Introducción a los Controladores de Vista
 
¿Qué es un Controlador de Vista?
Un controlador de vista (UIViewController) es un objeto que gestiona una vista y su jerarquía de sub-vistas. Es responsable de manejar la lógica de la interfaz de usuario y la interacción del usuario.
Ciclo de Vida del Controlador de Vista
- viewDidLoad: Llamado cuando la vista del controlador se ha cargado en memoria.
 - viewWillAppear: Llamado justo antes de que la vista del controlador se haga visible.
 - viewDidAppear: Llamado justo después de que la vista del controlador se haya hecho visible.
 - viewWillDisappear: Llamado justo antes de que la vista del controlador desaparezca.
 - viewDidDisappear: Llamado justo después de que la vista del controlador haya desaparecido.
 
Ejemplo Básico de un Controlador de Vista
#import "MyViewController.h"
@implementation MyViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Configurar la vista
    self.view.backgroundColor = [UIColor whiteColor];
    
    // Crear y agregar una etiqueta
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 50)];
    label.text = @"¡Hola, Mundo!";
    label.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:label];
}
@endEn este ejemplo, creamos un controlador de vista que configura su vista principal con un fondo blanco y agrega una etiqueta con el texto "¡Hola, Mundo!".
- Interacción entre Vistas y Controladores de Vista
 
Conexión de Vistas y Controladores de Vista
Las vistas y los controladores de vista están estrechamente conectados. El controlador de vista gestiona la lógica y el comportamiento de las vistas que contiene.
Ejemplo de Interacción
#import "MyViewController.h"
@implementation MyViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(50, 150, 200, 50);
    [button setTitle:@"Presióname" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}
- (void)buttonPressed {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"¡Hola!"
                                                                   message:@"Botón presionado"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];
}
@endEn este ejemplo, agregamos un botón a la vista y configuramos una acción para que se ejecute cuando el botón sea presionado. La acción muestra una alerta con un mensaje.
- Ejercicio Práctico
 
Ejercicio: Crear una Interfaz de Usuario Simple
Objetivo: Crear una aplicación que muestre un campo de texto y un botón. Cuando el usuario ingrese texto y presione el botón, el texto ingresado se mostrará en una etiqueta.
Pasos:
- Crear un nuevo proyecto de iOS en Xcode.
 - En el archivo 
ViewController.m, agregar un campo de texto, un botón y una etiqueta a la vista principal. - Configurar una acción para el botón que actualice el texto de la etiqueta con el texto ingresado en el campo de texto.
 
Código de Solución:
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) UITextField *textField;
@property (nonatomic, strong) UILabel *label;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 200, 40)];
    self.textField.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:self.textField];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(50, 150, 200, 50);
    [button setTitle:@"Mostrar Texto" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(showText) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(50, 220, 200, 40)];
    self.label.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:self.label];
}
- (void)showText {
    self.label.text = self.textField.text;
}
@end
- Conclusión
 
En esta sección, hemos aprendido sobre las vistas y los controladores de vista, que son componentes esenciales para construir interfaces de usuario en iOS. Hemos visto cómo crear y configurar vistas, cómo gestionar la lógica de la interfaz de usuario con controladores de vista y cómo hacer que interactúen entre sí. Con estos conocimientos, estás preparado para construir interfaces de usuario más complejas y funcionales en tus aplicaciones iOS.
En el próximo tema, exploraremos el uso de Auto Layout para crear interfaces de usuario que se adapten a diferentes tamaños de pantalla y orientaciones.
Curso de Programación en Objective-C
Módulo 1: Introducción a Objective-C
- Introducción a Objective-C
 - Configuración del Entorno de Desarrollo
 - Sintaxis y Estructura Básica
 - Tipos de Datos y Variables
 - Operadores y Expresiones
 
Módulo 2: Flujo de Control
Módulo 3: Funciones y Métodos
- Definición y Llamada de Funciones
 - Parámetros de Función y Valores de Retorno
 - Sintaxis de Métodos en Objective-C
 - Métodos de Clase e Instancia
 
Módulo 4: Programación Orientada a Objetos
Módulo 5: Gestión de Memoria
- Introducción a la Gestión de Memoria
 - Conteo Automático de Referencias (ARC)
 - Retención y Liberación Manual
 - Mejores Prácticas de Gestión de Memoria
 
Módulo 6: Temas Avanzados
Módulo 7: Trabajo con Datos
- Manejo de Archivos
 - Serialización y Deserialización
 - Conceptos Básicos de Redes
 - Trabajo con JSON y XML
 
