cómo implementar un cuadro de diálogo emergente en iOS

Después de un cálculo, quiero mostrar un cuadro emergente o de alerta que transmita un mensaje al usuario. ¿Alguien sabe dónde puedo encontrar más información sobre esto?

Sí, es probable que UIAlertView sea ​​lo que estás buscando. Aquí hay un ejemplo:

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection" message:@"You must be connected to the internet to use this app." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; 

Si desea hacer algo más elegante, por ejemplo, mostrar una interfaz de usuario personalizada en su UIAlertView , puede subclase UIAlertView y poner componentes de interfaz de usuario personalizados en el método init . Si desea responder a un botón, presione después de que aparezca UIAlertView , puede configurar el delegate anterior e implementar el - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex método - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex .

También es posible que desee mirar la UIActionSheet .

Diferentes personas que llegan a esta pregunta significan cosas diferentes en una ventana emergente. Recomiendo leer la documentación de Vistas temporales . Mi respuesta es en gran parte un resumen de esta y otra documentación relacionada.

Alerta (muéstreme un ejemplo)

enter image description here

Las alertas muestran un título y un mensaje opcional. El usuario debe reconocerlo (una alerta de un botón) o hacer una elección simple (una alerta de dos botones) antes de continuar. Usted crea una alerta con un UIAlertController .

Vale la pena citar la advertencia de la documentación y consejos sobre cómo crear alertas innecesarias.

enter image description here

Notas:

  • Consulte también Alert Views , pero a partir de iOS 8, UIAlertView quedó en desuso. Debería usar UIAlertController para crear alertas ahora.
  • Fundamentos de iOS: UIAlertView y UIAlertController (tutorial)

Hoja de acción (muéstrame un ejemplo)

enter image description here

Las Hojas de Acción le dan al usuario una lista de opciones. Aparecen en la parte inferior de la pantalla o en un popover dependiendo del tamaño y la orientación del dispositivo. Al igual que con las alertas, se usa un UIAlertController para crear una hoja de acción. Antes de iOS 8, se utilizó UIActionSheet , pero ahora la documentación dice:

Importante: UIActionSheet está en desuso en iOS 8. (Tenga en cuenta que UIActionSheetDelegate también está en desuso). Para crear y administrar hojas de acción en iOS 8 y posteriores, utilice UIAlertController con un estilo preferredStyle de UIAlertControllerStyleActionSheet .

Vista modal (mostrarme un ejemplo)

enter image description here

Una vista modal es una vista autónoma que tiene todo lo que necesita para completar una tarea. Puede o no ocupar la pantalla completa. Para crear una vista modal, use un UIPresentationController con uno de los estilos de presentación modal .

Ver también

  • Presentación de controladores de vista desde otros controladores de vista
  • Contextos modales

Popover (muéstrame un ejemplo)

enter image description here

Un Popover es una vista que aparece cuando un usuario toca algo y desaparece al tocarlo. Tiene una flecha que muestra el control o la ubicación desde donde se hizo el tap. El contenido puede ser casi cualquier cosa que pueda colocar en un Controlador de Vista. Haces un popover con un UIPopoverPresentationController . (Antes de iOS 8, UIPopoverController era el método recomendado).

En el pasado, los popovers solo estaban disponibles en el iPad, pero a partir de iOS 8 también puedes obtenerlos en un iPhone (mira aquí , aquí y aquí ).

Ver también

  • Controladores de vista: Popovers

Notificaciones

enter image description here

Las notificaciones son sonidos / vibraciones, alertas / pancartas o insignias que notifican al usuario algo incluso cuando la aplicación no se ejecuta en primer plano.

enter image description here

Ver también

  • Guía de progtwigción de notificación local y remota
  • Notificaciones simples e interactivas en iOS 8

Una nota sobre Android Toasts

enter image description here

En Android, un Toast es un mensaje corto que se muestra en la pantalla durante un corto período de tiempo y luego desaparece automáticamente sin interrumpir la interacción del usuario con la aplicación.

Las personas que provienen de un entorno Android quieren saber cuál es la versión de iOS de un Toast. Algunos ejemplos de estas preguntas pueden encontrarse aquí , aquí , aquí y aquí . La respuesta es que no hay equivalente a un Toast en iOS . Varias soluciones provisionales que se han presentado incluyen:

  • Haga su propio con un UIView subclasificado
  • Importar un proyecto de un tercero que imita una tostada
  • Use una alerta sin botones con un temporizador

Sin embargo, mi consejo es seguir con las opciones de UI estándar que ya vienen con iOS. No intente hacer que su aplicación se vea y se comporte exactamente igual que la versión de Android. Piense en cómo volver a empaquetarlo para que se vea y se sienta como una aplicación de iOS.

Desde el lanzamiento de iOS 8, UIAlertView ahora está en desuso. Ahora usará UIAlertController .

Aquí hay una muestra de cómo se ve en Swift

 let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertControllerStyle.alert) let alertAction = UIAlertAction(title: "OK!", style: UIAlertActionStyle.default) { (UIAlertAction) -> Void in } alert.addAction(alertAction) present(alert, animated: true) { () -> Void in } 

Como puede ver, la API nos permite implementar devoluciones de llamadas tanto en la acción como cuando presentamos la alerta que es bastante útil.

Actualizado para iOS 8.0

Desde iOS 8.0, necesitará usar UIAlertController de la siguiente manera:

 -(void)alertMessage:(NSString*)message { UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Alert" message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {}]; [alert addAction:defaultAction]; [self presentViewController:alert animated:YES completion:nil]; } 

Donde self en mi ejemplo es UIViewController, que implementa el método “presentViewController” para una ventana emergente.

David

Para Swift 3 y Swift 4:

Como UIAlertView está en desuso, existe una buena manera de mostrar Alerta en Swift 3

 let alertController = UIAlertController(title: NSLocalizedString("No network connection",comment:""), message: NSLocalizedString("connected to the internet to use this app.",comment:""), preferredStyle: .alert) let defaultAction = UIAlertAction(title: NSLocalizedString("Ok", comment: ""), style: .default, handler: { (pAlert) in //Do whatever you wants here }) alertController.addAction(defaultAction) self.present(alertController, animated: true, completion: nil) 

Obsoleto :

Esta es la versión rápida inspirada en la respuesta marcada:

Mostrar AlertView:

  let alert = UIAlertView(title: "No network connection", message: "You must be connected to the internet to use this app.", delegate: nil, cancelButtonTitle: "Ok") alert.delegate = self alert.show() 

Agregue el delegado a su controlador de vista:

 class AgendaViewController: UIViewController, UIAlertViewDelegate 

Cuando el usuario hace clic en el botón, este código se ejecutará:

 func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) { } 

Aunque ya escribí una descripción general de diferentes tipos de ventanas emergentes, la mayoría de la gente solo necesita una alerta.

Cómo implementar un cuadro de diálogo emergente

enter image description here

 class ViewController: UIViewController { @IBAction func showAlertButtonTapped(_ sender: UIButton) { // create the alert let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertControllerStyle.alert) // add an action (button) alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)) // show the alert self.present(alert, animated: true, completion: nil) } } 

Mi respuesta más completa está aquí .

Aquí está la versión de C # en Xamarin.iOS

 var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok"); alert.Show();