web-dev-qa-db-fra.com

comment implémenter une boîte de dialogue contextuelle dans iOS

Après un calcul, je souhaite afficher une boîte de dialogue ou un message d'alerte transmettant un message à l'utilisateur. Est-ce que quelqu'un sait où je peux trouver plus d'informations à ce sujet?

294
Namratha

Oui, un UIAlertView est probablement ce que vous recherchez. Voici un exemple:

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 vous voulez faire quelque chose de plus sophistiqué, disons afficher une interface utilisateur personnalisée dans votre UIAlertView, vous pouvez sous-classer UIAlertView et insérer des composants d'interface utilisateur personnalisés dans la méthode init. Si vous souhaitez répondre à une pression sur un bouton après l'apparition d'un UIAlertView, vous pouvez définir le paramètre delegate ci-dessus et mettre en œuvre la méthode - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex.

Vous voudrez peut-être aussi regarder la UIActionSheet.

516
donkim

Les différentes personnes qui viennent à cette question signifient différentes choses par une boîte de dialogue contextuelle. Je recommande fortement de lire la documentation Temporary Views . Ma réponse est en grande partie un résumé de ceci et d’autres documents connexes.

Alerte (montrez-moi un exemple)

enter image description here

Les alertes affichent un titre et un message facultatif. L'utilisateur doit l'acquitter (alerte à un bouton) ou faire un choix simple (alerte à deux boutons) avant de continuer. Vous créez une alerte avec un UIAlertController .

Il convient de citer les avertissements et les conseils de la documentation concernant la création d'alertes inutiles.

enter image description here

Remarques:

Feuille d'action (montre-moi un exemple)

enter image description here

Les feuilles d'action donnent à l'utilisateur une liste de choix. Ils apparaissent au bas de l'écran ou dans une fenêtre contextuelle en fonction de la taille et de l'orientation de l'appareil. Comme pour les alertes, un UIAlertController est utilisé pour créer une feuille d'actions. Avant iOS 8, UIActionSheet était utilisé, mais maintenant la documentation indique:

Important: UIActionSheet est obsolète dans iOS 8. (Notez que UIActionSheetDelegate est également obsolète.) Pour créer et gérer des feuilles d'action dans iOS 8 et versions ultérieures, utilisez plutôt UIAlertController avec un preferredStyle de UIAlertControllerStyleActionSheet .

Vue modale (montrez-moi un exemple)

enter image description here

Une vue modale est une vue autonome qui contient tout ce dont elle a besoin pour mener à bien une tâche. Il peut ou non occuper tout l'écran. Pour créer une vue modale, utilisez un UIPresentationController avec l'un des styles de présentation modal .

Voir également

Popover (montrez-moi un exemple)

enter image description here

A Popover is a view that appears when a user taps on something and disappears when tapping off it. It has an arrow showing the control or location from where the tap was made. The content can be just about anything you can put in a View Controller. You make a popover with a UIPopoverPresentationController . (Before iOS 8, UIPopoverController was the recommended method.)

Dans le passé, les popovers n'étaient disponibles que sur l'iPad, mais à partir de iOS 8, vous pouvez également les obtenir sur un iPhone (voir ici , ici , et ici ).

Voir également

Les notifications

enter image description here

Les notifications sont des sons/vibrations, des alertes/bannières ou des badges qui informent l'utilisateur de quelque chose même lorsque l'application ne s'exécute pas au premier plan.

enter image description here

Voir également

Une note à propos de Android Toasts

enter image description here

Sous Android, un Toast est un message court qui s'affiche à l'écran pendant un court laps de temps, puis disparaît automatiquement sans perturber l'interaction de l'utilisateur avec l'application.

Les personnes provenant d'un milieu Android veulent savoir quelle est la version iOS d'un Toast. Quelques exemples de ces questions peuvent-ils être trouvés ici , ici , ici , et ici . La réponse est que il n'y a pas d'équivalent à un pain grillé dans iOS . Les solutions de contournement présentées comprennent:

  • Fabriquez le vôtre avec un sous-classé UIView
  • Importer un projet tiers imitant un Toast
  • Utiliser une alerte sans bouton avec une minuterie

Cependant, mon conseil est de rester avec les options d'interface utilisateur standard déjà fournies avec iOS. N'essayez pas de donner à votre application un aspect et un comportement identiques à ceux de la version Android. Pensez à la façon de la reconditionner pour qu'elle ressemble à une application iOS.

166
Suragch

Depuis la sortie d'iOS 8, UIAlertView est maintenant obsolète. IAlertController est le remplacement.

Voici un exemple de son apparence dans 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
}

Comme vous pouvez le constater, l’API nous permet d’implémenter des rappels pour l’action et lors de la présentation de l’alerte, ce qui est très pratique!

Mis à jour pour Swift 4.2

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

Mise à jour pour iOS 8.

Depuis iOS 8.0, vous devrez utiliser UIAlertController comme suit:

-(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];
}

Où self dans mon exemple est un UIViewController, qui implémente la méthode "presentViewController" pour une fenêtre contextuelle.

David

24
us_david

Pour Swift 3 & Swift 4:

UIAlertView étant obsolète, il existe un bon moyen d'afficher Alert sur 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)

Obsolète:

Voici la version Swift inspirée de la réponse vérifiée:

Afficher 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()

Ajoutez le délégué à votre contrôleur de vue:

class AgendaViewController: UIViewController, UIAlertViewDelegate

Lorsque l'utilisateur clique sur le bouton, ce code sera exécuté:

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


}
10
Kevin ABRIOUX

Bien que j'aie déjà écrit un aperç de différents types de popups, la plupart des gens n'ont besoin que d'une alerte.

Comment implémenter une boîte de dialogue contextuelle

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: UIAlertController.Style.alert)

        // add an action (button)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))

        // show the alert
        self.present(alert, animated: true, completion: nil)
    }
}

Ma réponse plus complète est ici .

6
Suragch

Voici la version C # dans Xamarin.iOS

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