Buscar..


Mostrar una alerta

Para Alertas desde iOS 8, usaría un UIAlertController pero para las versiones anteriores, habría usado un UIAlertView , que ahora está en desuso.

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

Mostrar una alerta de inicio de sesión

El siguiente código es para iOS 8 e inferior para crear una alerta de inicio de sesión.

// 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();

Mostrar una hoja de acción

El UIAlertController disponible desde iOS8 le permite usar el mismo objeto de alerta para hojas de acción o para alertas más clásicas. La única diferencia es el UIAlertControllerStyle pasado como parámetro al crear.

Esta línea cambia de un AlertView a un ActionSheet, en comparación con algunos otros ejemplos disponibles aquí:

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

La forma en que agrega acciones al controlador sigue siendo la misma:

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

//Add additional actions if necessary

Tenga en cuenta que si tiene un método de anulación sin parámetros, puede usarlo como el último parámetro de .AddAction() .

Por ejemplo, supongamos que quiero que se ejecute el código de private void DoStuff(){...} cuando private void DoStuff(){...} "Aceptar":

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

Note que no estoy usando el () después de DoStuff en la creación de la acción.

La forma en que presenta el controlador se realiza de la misma manera que cualquier otro controlador:

this.PresentViewController(alert, true, null);

Mostrar el diálogo de alerta modal

Era una práctica común usar NSRunLoop para mostrar UIAlertView modal para bloquear la ejecución del código hasta que la entrada del usuario se procesa en iOS; Hasta que Apple lanzó el iOS7, rompió algunas aplicaciones existentes. Afortunadamente, hay una mejor manera de implementarlo con async / await de C #.

Aquí está el nuevo código que aprovecha el patrón async / await para mostrar 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow