Ricerca…


Mostra un avviso

Per gli avvisi a partire da iOS 8, si userebbe un UIAlertController ma per le versioni precedenti sarebbe stato utilizzato UIAlertView , che ora è deprecato.

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

Mostra un avviso di accesso

Il seguente codice è per iOS 8 e inferiore per la creazione di un avviso di accesso.

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

Mostra un foglio di azione

UIAlertController disponibile da iOS8 consente di utilizzare lo stesso oggetto di avviso per i fogli azione o per gli avvisi più classici. L'unica differenza è che UIAlertControllerStyle passato come parametro durante la creazione.

Questa linea cambia da AlertView a ActionSheet, rispetto ad altri esempi disponibili qui:

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

Il modo in cui aggiungi azioni al controller è sempre lo stesso:

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

//Add additional actions if necessary

Si noti che se si dispone di un metodo void senza parametri, è possibile utilizzarlo come ultimo parametro di .AddAction() .

Ad esempio, supponiamo di voler private void DoStuff(){...} il codice del private void DoStuff(){...} quando premo "OK":

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

Si noti che non sto usando () dopo DoStuff nella creazione dell'azione.

Il modo in cui si presenta il controller è fatto allo stesso modo di qualsiasi altro controller:

this.PresentViewController(alert, true, null);

Visualizza la finestra di dialogo degli avvisi modali

Era prassi comune utilizzare NSRunLoop per mostrare UIAlertView modale per bloccare l'esecuzione del codice fino a quando l'input dell'utente non viene elaborato in iOS; fino a quando Apple ha rilasciato iOS7, ha rotto alcune app esistenti. Fortunatamente, c'è un modo migliore di implementarlo con asincrona / attesa di C #.

Ecco il nuovo codice che sfrutta il modello async / await per mostrare UIAlertView modale:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow