UIAlertController

Bei der Ankündigung von iOS8 hat Swift die meiste Aufmerksamkeit bekommen. Apple hat aber noch mehr Neuerungen auf den Weg gebracht. Zum Beispiel die neue Klasse UIAlertController. Sie löst mit UIAlertView und UIActionSheet alte Elemente ab, vereint sie in einem einzigen Objekt und erleichtert in einem Atemzug auch noch die Verwendung. Grund genug, einen genaueren Blick auf die Klasse UIAlertController zu werfen!

Ablösung für die UIAlertView

In jeder App werden Dialoge benötigt. Möchtest Du den Datensatz wirklich löschen? Sollen Deine Eingaben wirklich verworfen werden? Möchtest Du den In-App Einkauf bestätigen? Das sind typische Benutzerdialoge:

UIActionController Alert

Auch Hinweise zu Fehlern oder Erfolgsmeldungen, die der Benutzer nur zur Kenntnis nimmt, werden immer wieder ausgegeben. Bis iOS7 wurde dafür auf die Klasse UIAlertView gesetzt. Die Aufgabe übernimmt der UIAlertController, wenn der Style-Parameter (preferredStyle) als Action angegeben wird. Der notwendige Code sieht wie folgt aus:

Zuerst wird eine Instanz von UIAlertController erzeugt. Hier setzt Du den Stil über den Parameter preferredStyle. Da das Beispiel zwei Buttons hat, sind zwei Actions notwendig. Zuerst wird dafür jeweils ein Objekt der Klasse UIAlertAction erzeugt. Über die Methode addAction fügst Du das zum Controller hinzu. Schließlich muss die neue View angezeigt werden. Dazu verwendest Du presentViewController.

UIActionSheet als Mehrfachauswahl

Wenn Du in WhatsApp eine Datei sendest, bietet die App am unteren Bildschirm eine Mehrfachauswahl. Willst Du ein Bild auswählen? Vielleicht ein Video? Oder ein neues Bild aufnehmen? Bislang ein klassisches UIActionSheet:

UIAlertController ActionSheet

Ab iOS8 gilt diese Klasse, ebenso wie die AlertView, als deprecated. Stattdessen wird der AlertController verwendet. Für die Unterscheidung zwischen den Varianten ist der Parameter preferredStyle ausschlaggebend. Bei dem Beispiel oben handelt es sich um den Stil ActionSheet:

Über den Parameter handler kannst Du Closures übergeben. Die werden ausgeführt, wenn der Benutzer den Button wählt. So könnte das Löschen aktiviert werden oder, im nächsten Schritt, ein Video oder Bild für den Versand gewählt werden.

Bei den Stilen gibt es aktuell nur die Auswahl zwischen .ActionSheet und .Alert. Beide Elemente sind Bestandteile der Enum-Deklaration von UIAlertControllerStyle. Vielleicht werden hier in Zukunft noch weitere Möglichkeiten angeboten.

Action-Closures statt Delegates

Besonders ist, dass kein Delegate mehr gesetzt werden muss. In früheren Versionen wurde die mögliche Aktion über ein UIActionSheetDelegate oder UIAlertViewDelegate angebunden. Gerade bei simplen Aktionen ist die neue Lösung über Closures viel übersichtlicher. Sie werden an „Ort und Stelle“ definiert. Auf Overhead wird verzichtet.

Schreib einen Kommentar

Your email address will not be published.