Sök…


Visa en varning

För varningar sedan iOS 8 skulle du använda en UIAlertController men för versioner tidigare skulle du ha använt en UIAlertView , som nu är uttagen.

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

Visa en inloggningsvarning

Följande kod är för iOS 8 och lägre för att skapa en inloggningsvarning.

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

Visa ett handlingsblad

UIAlertController tillgänglig sedan iOS8 gör att du kan använda samma varningsobjekt för antingen åtgärdsark eller mer klassiska varningar. Den enda skillnaden är UIAlertControllerStyle passeras som en parameter vid skapandet.

Den här raden ändras från en AlertView till ett ActionSheet, jämfört med några andra exempel tillgängliga här:

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

Det sätt som du lägger till åtgärder till kontrollenheten är fortfarande detsamma:

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

//Add additional actions if necessary

Observera att om du har en parameterlös tommetod kan du använda den som den sista parametern i .AddAction() .

Låt oss till exempel anta att jag vill att koden för private void DoStuff(){...} ska köras när jag trycker på "OK":

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

Observera att jag inte använder () efter DoStuff i skapandet av åtgärden.

Hur du presenterar styrenheten görs på samma sätt som alla andra kontroller:

this.PresentViewController(alert, true, null);

Visa dialogruta för modal varning

Det var vanligt att använda NSRunLoop att visa modal UIAlertView att blockera körning av kod tills användarinmatningen bearbetas i iOS; tills Apple släppte iOS7 bröt det få existerande appar. Lyckligtvis finns det ett bättre sätt att implementera det med C #: s async / invänta.

Här är den nya koden som utnyttjar async / väntemönster för att visa modal 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow