Szukaj…


Wyświetl alert

W przypadku alertów od iOS 8 używałbyś UIAlertController ale w przypadku wcześniejszych wersji używałbyś UIAlertView , który jest teraz przestarzały.

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

Wyświetl alert logowania

Poniższy kod dotyczy iOS 8 i niższych w celu utworzenia alertu logowania.

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

Wyświetl arkusz akcji

UIAlertController dostępny od iOS8 pozwala na użycie tego samego obiektu alertu w arkuszach akcji lub w bardziej klasycznych alertach. Jedyną różnicą jest UIAlertControllerStyle przekazany jako parametr podczas tworzenia.

Ta linia zmienia się z AlertView na ActionSheet, w porównaniu do innych przykładów dostępnych tutaj:

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

Sposób dodawania akcji do kontrolera jest nadal taki sam:

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

//Add additional actions if necessary

Zauważ, że jeśli masz .AddAction() metodę void, możesz jej użyć jako ostatniego parametru .AddAction() .

Załóżmy na przykład, że chcę, aby kod private void DoStuff(){...} był wykonywany po naciśnięciu „OK”:

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

Zauważ, że nie używam () po DoStuff do tworzenia akcji.

Sposób prezentacji kontrolera odbywa się w taki sam sposób jak każdy inny kontroler:

this.PresentViewController(alert, true, null);

Wyświetl Modalne okno dialogowe alertu

Powszechną praktyką było używanie NSRunLoop do pokazywania modalnego UIAlertView do wykonywania kodu blokowego, dopóki dane wejściowe użytkownika nie zostaną przetworzone w iOS; dopóki Apple nie wypuściło iOS7, zepsuło kilka istniejących aplikacji. Na szczęście istnieje lepszy sposób zaimplementowania go za pomocą async / czekaj w języku C #.

Oto nowy kod wykorzystujący wzorzec asynchroniczny / oczekujący, aby pokazać modalny UIAlertView:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow