Suche…


Alert anzeigen

Für Alarme seit iOS 8 würden Sie einen UIAlertController , für UIAlertController Versionen hätten Sie jedoch eine UIAlertView , die jetzt veraltet ist.

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

Zeigt eine Login-Warnung an

Der folgende Code gilt für iOS 8 und niedriger zum Erstellen einer Login-Warnung.

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

Aktionsblatt anzeigen

Mit UIAlertController seit UIAlertController verfügbaren UIAlertController können Sie dasselbe Alert-Objekt entweder für Aktionsblätter oder für klassische Alarme verwenden. Der einzige Unterschied ist der UIAlertControllerStyle , der beim Erstellen als Parameter übergeben wird.

Diese Zeile ändert sich von einer AlertView zu einem ActionSheet im Vergleich zu einigen anderen hier verfügbaren Beispielen:

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

Die Art und Weise, wie Sie dem Controller Aktionen hinzufügen, ist immer noch dieselbe:

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

//Add additional actions if necessary

Wenn Sie über eine parameterlose Void-Methode verfügen, können Sie diese als letzten Parameter der .AddAction() .

private void DoStuff(){...} wir zum Beispiel an, ich möchte, dass der Code von private void DoStuff(){...} ausgeführt wird, wenn ich "OK" drücke:

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

Beachten Sie, dass ich bei der Erstellung der Aktion nicht das () nach DoStuff verwende.

Die Art und Weise, wie Sie den Controller präsentieren, erfolgt auf dieselbe Weise wie jeder andere Controller:

this.PresentViewController(alert, true, null);

Dialog "Modal Alert" anzeigen

Es war allgemein üblich, NSRunLoop zum NSRunLoop von modalem UIAlertView zum Blockieren der Codeausführung zu verwenden, bis Benutzereingaben in iOS verarbeitet werden. bis Apple das iOS7 veröffentlichte, brach es wenige vorhandene Apps. Glücklicherweise gibt es eine bessere Möglichkeit, es mit C # async / await zu implementieren.

Hier ist der neue Code, der das async / await-Muster nutzt, um modale UIAlertView zu zeigen:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow