UIActionSheet y UIActionSheetDelegate

En este tutorial de iOS SDK para principiantes, veremos cómo implementar UIActionSheet y UIActionSheetDelegate. Esta clase le permitirá solicitar fácilmente al usuario una entrada al mostrar una lista de opciones de menú.


Paso 1: Configuración del proyecto

Inicia Xcode y haz click Archivo> Nuevo> Proyecto. Haga clic en "Aplicación" debajo del panel de iOS a la izquierda y luego haga clic en el icono "Aplicación de vista única". Haga clic en Siguiente".

En el campo "Nombre del producto", escriba "ActionSheetDemo" e ingrese un nombre para su Identificador de compañía, como "com.mobiletuts". Elija "iPhone" en el menú "Familia de dispositivos". Desmarque "Usar guiones gráficos" e "Incluir pruebas unitarias", y marque "Usar conteo automático de referencias". Haga clic en "Siguiente", elija una ubicación para guardar su proyecto y haga clic en "Crear".


Paso 2: Creación de la interfaz

Primero declaramos y definimos un método que mostrará la hoja de acción. Haga clic en el archivo "ViewController.m" y agregue la siguiente declaración de método y definición:

 @interface ViewController () - (void) showActionSheet: (id) sender; // Método de declaración para mostrar la hoja de acción @end @implementation ViewController… - (void) showActionSheet: (id) sender … 

Busca el viewDidLoad: método en el mismo archivo, y agregue el siguiente código para crear un botón mediante programación:

 Botón UIButton * = [botón UIButtonWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20.0f, 186.0f, 280.0f, 88.0f); [button setTitle: @ "Show Action Sheet" forState: UIControlStateNormal]; [button setTitleColor: [UIColor blackColor] forState: UIControlStateNormal]; button.tintColor = [UIColor darkGrayColor]; [button addTarget: self action: @selector (showActionSheet :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: button];

Al hacer el método anterior., showActionSheet:, El objetivo del botón, este método se llamará cuando se toque el botón. Ahora que tenemos un botón para mostrar la hoja de acción, pasemos a crear la lógica para abrir la hoja de acción cuando se presiona el botón.


Paso 3: De acuerdo con el delegado

Antes de que podamos llamar a cualquiera de los UIActionSheetDelegate métodos, debemos conformarnos a la UIActionSheetDelegate protocolo. Haga clic en el archivo "ViewController.h" y actualice la declaración de la interfaz al siguiente código.

 @interface ViewController: UIViewController 

De conformidad con la UIActionSheetDelegate protocolo, el ViewController la clase puede implementar y realizar las tareas necesarias cuando se llaman ciertos métodos de delegado.


Paso 4: Agregar el método de delegado

Aún en el archivo "ViewController.m", agregue lo siguiente UIActionSheetDelegate método.

 - (void) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex 

Hay muchos UIActionSheetDelegate Sin embargo, solo usaremos uno: actionSheet: clickedButtonAtIndex:. Este es uno de los métodos de delegado más comúnmente implementados, ya que se llama automáticamente cuando se toca uno de los botones en la hoja de acción.


Paso 5: mostrando la hoja de acción

Busca el showActionSheet: Definición del método que agregamos anteriormente. Agregue el siguiente código dentro de las llaves para crear una hoja de acción con cinco botones.

 NSString * actionSheetTitle = @ "Demo de hoja de acción"; // Título de la hoja de acción NSString * destructiveTitle = @ "Botón destructivo"; // Título de los botones de la hoja de acción NSString * other1 = @ "Otro botón 1"; NSString * other2 = @ "Otro botón 2"; NSString * other3 = @ "Otro botón 3"; NSString * cancelTitle = @ "Cancel Button"; UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: actionSheetTitle delegate: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitles: other1, other2, other3, nil]; [actionSheet showInView: self.view];

Como su nombre lo indica, una hoja de acción presenta al usuario diferentes opciones y las acciones correspondientes que se pueden realizar. En la primera parte del método, creamos seis cadenas, una que representa el título de la hoja de acción y cinco que representan los títulos de los botones en la hoja de acción. La siguiente parte crea una hoja de acción con parámetros específicos. Estos parámetros incluyen un título para la hoja de acción, el objeto que será el delegado (en este caso yo, la UIViewController objeto), y los distintos botones que se mostrarán en la hoja de acción.

Hay tres tipos principales de botones utilizados en una hoja de acción. los cancelButtonTitle: Cancela la hoja de acción por completo. los títuloButtonButton: destruye o borra algo; este botón por defecto es rojo en la hoja de acción. los otros titulos de titulo: puede ser cualquier cosa, ya menudo ofrece una opción como navegar a un nuevo viewController. Para omitir uno de los botones, simplemente pase nulo como argumento para el título de ese botón. La última parte del método., showInView:, Muestra la hoja de acción en la vista especificada..


Paso 6: Responder a una pulsación de botón

Navegar de nuevo al método de delegado actionSheet: clickedButtonAtIndex:. Agregue el siguiente código para determinar qué botón se presionó:

 // Obtenga el nombre del botón actual presionado NSString * buttonTitle = [actionSheet buttonTitleAtIndex: buttonIndex]; if ([buttonTitle isEqualToString: @ "Destructive Button"]) NSLog (@ "Destructive presionado -> Delete Something");  si ([buttonTitle isEqualToString: @ "Otro botón 1"]) NSLog (@ "Otro 1 presionado");  si ([buttonTitle isEqualToString: @ "Otro botón 2"]) NSLog (@ "Otro 2 presionado");  si ([buttonTitle isEqualToString: @ "Otro botón 3"]) NSLog (@ "Otro 3 presionado");  si ([buttonTitle isEqualToString: @ "Cancel Button"]) NSLog (@ "Cancel presionado -> Cancel ActionSheet"); 

Cuando se presiona un botón, actionSheet: clickedButtonAtIndex: se llama. Obtenemos el nombre del botón que se presiona y lo comparamos con los diferentes títulos de los botones de la hoja de acción para determinar qué botón se presionó. los NSLog con cada instrucción if se registrará qué botón se presionó en la consola.


Paso 7: Probando la Hoja de Acción

Hacer clic Producto> Ejecutar para construir y ejecutar el proyecto en el simulador. Haga clic en "Mostrar hoja de acción" para abrir la hoja de acción. Abre la consola haciendo clic Ver> Área de depuración> Activar consola en Xcode. Haga clic en uno de los botones de la hoja de acción para ver el registro correspondiente en la consola.


Conclusión

UIActionSheet Se usa comúnmente para ofrecerle a un usuario muchas opciones. Experimentando con UIActionSheet Le permitirá encontrar la configuración que funcione para las necesidades de su aplicación. ¿Preguntas o comentarios? Siéntase libre de dejarlos en la sección de comentarios o enviarlos directamente a través de Twitter @aaron_crabtree.