Zoeken…


Toon een waarschuwing

Voor waarschuwingen sinds iOS 8 zou u een UIAlertController maar voor UIAlertController versies had u een UIAlertView , die nu is verouderd.

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

Toon een login-melding

De volgende code is voor iOS 8 en lager voor het maken van een aanmeldingsmelding.

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

Geef een actieblad weer

Met de UIAlertController die sinds UIAlertController beschikbaar is, kunt u hetzelfde waarschuwingsobject gebruiken voor UIAlertController of meer klassieke waarschuwingen. Het enige verschil is dat de UIAlertControllerStyle als parameter wordt doorgegeven bij het maken.

Deze regel verandert van een AlertView in een ActionSheet, vergeleken met enkele andere voorbeelden die hier beschikbaar zijn:

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

De manier waarop u acties toevoegt aan de controller is nog steeds hetzelfde:

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

//Add additional actions if necessary

Merk op dat als u een parameterloze void-methode hebt, u deze kunt gebruiken als de laatste parameter van de .AddAction() .

Laten we bijvoorbeeld aannemen dat ik de code van private void DoStuff(){...} wil uitvoeren als ik op "OK" druk:

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

Merk op dat ik de () na DoStuff niet gebruik bij het maken van de actie.

De manier waarop u de controller presenteert, gebeurt op dezelfde manier als elke andere controller:

this.PresentViewController(alert, true, null);

Dialoogvenster Modal Alert weergeven

Het was gebruikelijk om NSRunLoop te gebruiken om modale UIAlertView te tonen om code-uitvoering te blokkeren totdat gebruikersinvoer wordt verwerkt in iOS; totdat Apple de iOS7 uitbracht, brak het enkele bestaande apps. Gelukkig is er een betere manier om het te implementeren met C #'s async / await.

Hier is de nieuwe code die gebruikmaakt van async / await patroon om modale UIAlertView te tonen:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow