Video: Switcher Studio en Español - ¿Cómo añadir un dispositivo/cámara? 2025
La mayoría de las veces, el usuario puede controlar lo que está sucediendo en las aplicaciones de iOS. Usted proporciona los botones y otros elementos de la interfaz, pero el usuario elige qué hacer y qué elementos de la interfaz debe tocar. Las vistas modales interrumpen el control del usuario. Se presentan en la pantalla y, aunque el usuario puede tocar dentro de ellos, se mantienen al frente y al centro hasta que el usuario los descarta.
Se usan cuando desea que el usuario haga algo o resuelva un problema antes de continuar utilizando el resto de la aplicación. El dispositivo no está bloqueado porque el usuario puede usar el botón de Inicio para moverse a otra aplicación, pero en lo que respecta a su aplicación, se congela hasta que se cierra la vista modal.
La forma más común de administrar vistas modales es creando un protocolo Objective-C que es adoptado por el controlador que presenta la vista modal. La vista modal, cuando el usuario ha seleccionado una acción o Cancelar, envía un mensaje al método de delegado del controlador que presenta. El controlador solicitante despide el controlador modal.
El uso de este enfoque significa que, antes de descartar el controlador modal, el controlador que lo presenta puede obtener de él los datos que necesita. Ese es el patrón que implementará aquí.
Comienza a implementar la vista modal al declarar el protocolo y algunas otras propiedades que necesitará, así como los protocolos que DestinationController debe adoptar.
Para comenzar, agregue el código en negrita en el Listado 20-1 al DestinationController. marido.
#import @protocol DestinationControllerDelegate ; @interface DestinationController: UIViewController @property (débil, no atómico) IBOutlet UITableView * destinationTableView; @property (strong, nonatomic) id delegado; @property (nonatomic, readonly) NSUInteger selectedDestination; - (IBAction) cancelar: (id) remitente; -d @protocol DestinationControllerDelegate @required - (void) destinationController: (DestinationController *) controller didFinishWithSave: (BOOL) save; -d
El lenguaje Objective-C proporciona una forma de declarar formalmente una lista de métodos (incluidas las propiedades declaradas) como un protocolo. Usó protocolos ampliamente provistos por el marco en este libro, y ahora está definiendo su propio protocolo.
Declaras protocolos formales con la directiva @protocol. Usted declaró un protocolo DestinationControllerDelegate con un método, destinationController: didFinishWithSave:, que es obligatorio. Obligatorio es el predeterminado; si quisiera declarar métodos opcionales, usaría la palabra clave @optional, y todos los métodos que siguen a esa palabra clave serían opcionales.Por ejemplo, considere esto:
@protocol SimpleDelegate @optional - (void) doNothing; -d
Puede tener los métodos @required y @optional en un protocolo. Es común agruparlos, pero puede intercalarlos si lo desea.
Si no se especifica ni @required ni @optional, se asume @required. Sin embargo, es mejor ser específico sobre lo que se requiere y lo que es opcional. La declaración @protocol DestinationControllerDelegate: (en la parte superior) le dice al compilador que un protocolo está en camino. Al igual que la declaración @class, dice: "Créeme, encontrarás el protocolo. "Necesita esto aquí solo porque ha agregado esto:
@property (strong, nonatomic) id delegate;
Esta instrucción le dice al compilador que escriba check (verificar) lo que usted asigna para delegar para asegurarse de que implemente el protocolo DestinationControllerDelegate.
También agregó la propiedad Destino seleccionada, que usará en ViewController para determinar qué destino seleccionó el usuario. Tenga en cuenta que ha hecho que sea de solo lectura porque no hay ningún motivo para que otro objeto pueda configurarlo.
También adoptó dos protocolos del marco Cocoa Touch, UITableViewDelegate y UITableViewDataSource, que usará para administrar la vista de tabla.
A continuación, deberá actualizar la implementación de DestinationController con el código en negrita para algunos archivos de encabezado que necesitará usar más adelante.
#import "DestinationController. H" #import "DetailViewController. H" #import "AppDelegate. H" @interface DestinationController () -d @implementation DestinationController
Ahora que tiene la plomería, puede ver lo que sucederá en el DestinationController.