Anzeigen von Warnungen in Xamarin.iOS

Ab iOS 8 wurden uiActionSheet und UIAlertView durch UIAlertController ersetzt, die jetzt veraltet sind.

Im Gegensatz zu den ersetzten Klassen, bei denen es sich um Unterklassen von UIView handelt, ist UIAlertController eine Unterklasse von UIViewController.

Verwenden Sie UIAlertControllerStyle , um den Typ der anzuzeigenden Warnung anzugeben. Diese Warnungstypen sind:

  • UIAlertControllerStyleActionSheet
    • Vor iOS 8 wäre dies ein UIActionSheet gewesen.
  • UIAlertControllerStyleAlert
    • Vor iOS 8 wäre dies UIAlertView gewesen.

Beim Erstellen eines Warnungscontrollers müssen drei schritte ausgeführt werden:

  • Erstellen und konfigurieren Sie die Warnung mit einem:

    • title
    • message
    • preferredStyle
  • (Optional) Hinzufügen eines Textfelds

  • Hinzufügen der erforderlichen Aktionen

  • Präsentieren des Ansichtscontrollers

Die einfachste Warnung enthält eine einzelne Schaltfläche, wie in diesem Screenshot gezeigt:

Warnung mit einer Schaltfläche

Der Code zum Anzeigen einer einfachen Warnung lautet wie folgt:

okayButton.TouchUpInside += (sender, e) => {

    //Create Alert
    var okAlertController = UIAlertController.Create ("Title", "The message", UIAlertControllerStyle.Alert);

    //Add Action
    okAlertController.AddAction (UIAlertAction.Create ("OK", UIAlertActionStyle.Default, null));

    // Present Alert
    PresentViewController (okAlertController, true, null);
};

Das Anzeigen einer Warnung mit mehreren Optionen erfolgt auf ähnliche Weise, aber fügen Sie zwei Aktionen hinzu. Der folgende Screenshot zeigt beispielsweise eine Warnung mit zwei Schaltflächen:

Warnung mit zwei Schaltflächen

okayCancelButton.TouchUpInside += ((sender, e) => {

    //Create Alert
    var okCancelAlertController = UIAlertController.Create("Alert Title", "Choose from two buttons", UIAlertControllerStyle.Alert);

    //Add Actions
    okCancelAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, alert => Console.WriteLine ("Okay was clicked")));
    okCancelAlertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, alert => Console.WriteLine ("Cancel was clicked")));

    //Present Alert
    PresentViewController(okCancelAlertController, true, null);
});

Warnungen können auch ein Aktionsblatt anzeigen, ähnlich wie im folgenden Screenshot:

Warnung des Aktionsblatts

Schaltflächen werden der Warnung mit der AddAction -Methode hinzugefügt:

actionSheetButton.TouchUpInside += ((sender, e) => {

    // Create a new Alert Controller
    UIAlertController actionSheetAlert = UIAlertController.Create("Action Sheet", "Select an item from below", UIAlertControllerStyle.ActionSheet);

    // Add Actions
    actionSheetAlert.AddAction(UIAlertAction.Create("OK",UIAlertActionStyle.Default, (action) => Console.WriteLine ("Item One pressed.")));

    actionSheetAlert.AddAction(UIAlertAction.Create("custom button 1",UIAlertActionStyle.Default, (action) => Console.WriteLine ("Item Two pressed.")));

    actionSheetAlert.AddAction(UIAlertAction.Create("Cancel",UIAlertActionStyle.Cancel, (action) => Console.WriteLine ("Cancel button pressed.")));

    // Required for iPad - You must specify a source for the Action Sheet since it is
    // displayed as a popover
    UIPopoverPresentationController presentationPopover = actionSheetAlert.PopoverPresentationController;
    if (presentationPopover!=null) {
        presentationPopover.SourceView = this.View;
        presentationPopover.PermittedArrowDirections = UIPopoverArrowDirection.Up;
    }

    // Display the alert
    this.PresentViewController(actionSheetAlert,true,null);
});