Recherche…


Afficher une alerte

Pour les alertes depuis iOS 8, vous utiliseriez un UIAlertController mais pour les versions précédentes, vous auriez utilisé un UIAlertView , qui est maintenant obsolète.

8.0
var alert = UIAlertController.Create(title, message, UIAlertControllerStyle.Alert);
alert.AddAction(UIAlertAction.Create(otherTitle, UIAlertActionStyle.Destructive, (action) => {
    // otherTitle();
}));
alert.AddAction(UIAlertAction.Create(cancelTitle, UIAlertActionStyle.Cancel, null));
this.PresentViewController(alert, true, null);
8.0
var alert = new UIAlertView (title, message, null, cancelTitle, otherTitle);
alert.Clicked += (object sender, UIButtonEventArgs e) => {
    if(e.ButtonIndex == 1)
       // otherTitle();
};
alert.Show ();

Afficher une alerte de connexion

Le code suivant concerne iOS 8 et versions inférieures pour créer une alerte de connexion.

// Create the UIAlertView
var loginAlertView = new UIAlertView(title, message, null, cancelTitle, okTitle);

// Setting the AlertViewStyle to UIAlertViewStyle.LoginAndPasswordInput
loginAlertView.AlertViewStyle = UIAlertViewStyle.LoginAndPasswordInput;

// Getting the fields Username and Password
var usernameTextField = loginAlertView.GetTextField(0);
var passwordTextField = loginAlertView.GetTextField(1);

// Setting a placeholder
usernameTextField.Placeholder = "[email protected]";
passwordTextField.Placeholder = "Password";

// Adding the button click handler.
loginAlertView.Clicked += (alertViewSender, buttonArguments) =>
{
    
    // Check if cancel button is pressed
    if (buttonArguments.ButtonIndex == loginAlertView.CancelButtonIndex)
    {
        // code
    }
    
    // In our case loginAlertView.FirstOtherButtonIndex is equal to the OK button
    if (buttonArguments.ButtonIndex == loginAlertView.FirstOtherButtonIndex)
    {
        // code
    }
};

// Show the login alert dialog
loginAlertView.Show();

Afficher une feuille d'action

UIAlertController disponible depuis iOS8 vous permet d'utiliser le même objet d'alerte pour les feuilles d'action ou d'autres alertes classiques. La seule différence réside dans le passage de UIAlertControllerStyle tant que paramètre lors de la création.

Cette ligne passe d'une AlertView à une ActionSheet, comparée à d'autres exemples disponibles ici:

var alert = UIAlertController.Create(title, message, UIAlertControllerStyle.ActionSheet);

La façon dont vous ajoutez des actions au contrôleur est toujours la même:

alert.AddAction(UIAlertAction.Create(otherTitle, UIAlertActionStyle.Destructive, (action) => {
    // ExecuteSomeAction();
}));
alert.AddAction(UIAlertAction.Create(cancelTitle, UIAlertActionStyle.Cancel, null));

//Add additional actions if necessary

Notez que si vous avez une méthode vide sans paramètre, vous pouvez l'utiliser comme dernier paramètre de .AddAction() .

Par exemple, supposons que le code de private void DoStuff(){...} soit exécuté lorsque j'appuie sur "OK":

UIAlertAction action = UIAlertAction.Create("OK", UIAlertActionStyle.Cancel, DoStuff);
alert.AddAction(action);

Notez que je n'utilise pas le () après DoStuff dans la création de l'action.

La façon dont vous présentez le contrôleur se fait de la même manière que tout autre contrôleur:

this.PresentViewController(alert, true, null);

Afficher le dialogue d'alerte modale

Il était courant d'utiliser NSRunLoop pour afficher UIAlertView modal UIAlertView de bloquer l'exécution du code jusqu'à ce que l'entrée utilisateur soit traitée dans iOS; jusqu'à ce qu'Apple publie l'iOS7, il a brisé quelques applications existantes. Heureusement, il existe une meilleure façon de l'implémenter avec l'async / wait de C #.

Voici le nouveau code tirant parti du motif asynchrone / en attente pour afficher UIAlertView modal:

Task ShowModalAletViewAsync (string title, string message, params string[] buttons)
{
    var alertView = new UIAlertView (title, message, null, null, buttons);
    alertView.Show ();
    var tsc = new TaskCompletionSource ();

    alertView.Clicked += (sender, buttonArgs) => {
        Console.WriteLine ("User clicked on {0}", buttonArgs.ButtonIndex);
        tsc.TrySetResult(buttonArgs.ButtonIndex);
    };
    return tsc.Task;
}

//Usage
async Task PromptUser() {
    var result = await ShowModalAletViewAsync 
               ("Alert", "Do you want to continue?", "Yes", "No"); //process the result
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow