Xamarin.iOS
Alarme
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.
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);
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
}