UIActionSheet und UIActionSheetDelegate

In diesem iOS SDK-Tutorial für Anfänger werden wir die Implementierung erläutern UIActionSheet und UIActionSheetDelegate. Mit dieser Klasse können Sie den Benutzer auf einfache Weise zur Eingabe auffordern, indem Sie eine Liste mit Menüoptionen anzeigen.


Schritt 1: Projekt einrichten

Starten Sie Xcode und klicken Sie auf Datei> Neu> Projekt. Klicken Sie links im iOS-Bereich auf "Anwendung" und klicken Sie dann auf das Symbol "Einzelansicht". Weiter klicken".

Geben Sie im Feld "Produktname" "ActionSheetDemo" ein und geben Sie einen Namen für Ihre Firmenkennung ein, beispielsweise "com.mobiletuts". Wählen Sie "iPhone" aus dem Menü "Gerätefamilie". Deaktivieren Sie "Use Storyboards" und "Unit-Tests einbeziehen", und aktivieren Sie "Automatische Referenzzählung verwenden". Klicken Sie auf "Weiter", wählen Sie einen Ort zum Speichern Ihres Projekts und klicken Sie auf "Erstellen"..


Schritt 2: Schnittstellenerstellung

Zuerst definieren und definieren wir eine Methode, mit der das Aktionsblatt angezeigt wird. Klicken Sie auf die Datei "ViewController.m" und fügen Sie die folgende Methodendeklaration und -definition hinzu:

 @Interface ViewController () - (void) showActionSheet: (ID) Absender; // Methode deklarieren, um Aktionsblatt anzuzeigen @end @implementation ViewController… - (void) showActionSheet: (ID) Absender … 

Suche nach viewDidLoad: Methode in derselben Datei und fügen Sie den folgenden Code hinzu, um eine Schaltfläche programmgesteuert zu erstellen:

 UIButton * button = [UIButton buttonWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20.0f, 186.0f, 280.0f, 88.0f); [button setTitle: @ "Action Sheet anzeigen" fürState: UIControlStateNormal]; [button setTitleColor: [UIColor blackColor] fürState: UIControlStateNormal]; button.tintColor = [UIColor darkGrayColor]; [button addTarget: Eigenaktion: @selector (showActionSheet :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: Schaltfläche];

Durch die vorige Methode, showActionSheet:, Als Ziel für die Schaltfläche wird diese Methode aufgerufen, wenn Sie auf die Schaltfläche tippen. Nachdem wir nun eine Schaltfläche zum Anzeigen des Aktionsblatts haben, gehen wir weiter zum Erstellen der Logik, um das Aktionsblatt aufzurufen, wenn die Schaltfläche gedrückt wird.


Schritt 3: Konformität mit dem Delegierten

Bevor wir einen der anrufen können UIActionSheetDelegate Methoden müssen wir uns an die UIActionSheetDelegate Protokoll. Klicken Sie auf die Datei "ViewController.h" und aktualisieren Sie die Schnittstellendeklaration mit dem folgenden Code.

 @Interface ViewController: UIViewController 

Durch die Anpassung an die UIActionSheetDelegate Protokoll, das ViewController Klasse kann erforderliche Aufgaben implementieren und ausführen, wenn bestimmte Delegatmethoden aufgerufen werden.


Schritt 4: Hinzufügen der Delegatmethode

Fügen Sie in der Datei "ViewController.m" noch Folgendes hinzu UIActionSheetDelegate Methode.

 - (void) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex 

Da sind viele UIActionSheetDelegate Methoden werden wir jedoch nur eine verwenden: actionSheet: clickedButtonAtIndex:. Dies ist eine der am häufigsten implementierten Delegat-Methoden, da sie automatisch aufgerufen wird, wenn auf eine der Schaltflächen auf dem Aktionsblatt geklickt wird.


Schritt 5: Anzeigen des Aktionsblatts

Suche nach showActionSheet: Methodendefinition, die wir zuvor hinzugefügt haben. Fügen Sie den folgenden Code in die geschweiften Klammern ein, um ein Aktionsblatt mit fünf Schaltflächen zu erstellen.

 NSString * actionSheetTitle = @ "Action Sheet Demo"; // Action Sheet-Titel NSString * destructiveTitle = @ "Destruktive Schaltfläche"; // Titel der Aktionsblatt-Schaltfläche NSString * other1 = @ "Other Button 1"; NSString * other2 = @ "Other Button 2"; NSString * other3 = @ "Other Button 3"; NSString * cancelTitle = @ "Abbrechen-Schaltfläche"; UIActionSheet * actionSheet = [[UIActionSheet-Zuordnung] initWithTitle: actionSheetTitle delegate: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitles: other1, other2, other3, nil]; [actionSheet showInView: self.view];

Wie der Name schon sagt, zeigt ein Aktionsblatt dem Benutzer verschiedene Auswahlmöglichkeiten und entsprechende Aktionen, die ausgeführt werden können. Im ersten Teil der Methode erstellen wir sechs Zeichenfolgen, von denen eine den Titel des Aktionsblatts und fünf die Titel der Schaltflächen im Aktionsblatt darstellt. Der nächste Teil instantiiert ein Aktionsblatt mit spezifischen Parametern. Zu diesen Parametern gehört ein Titel für das Aktionsblatt, das Objekt, das der Delegierte sein wird (in diesem Fall) selbst, das UIViewController Objekt) und die verschiedenen Schaltflächen, die im Aktionsblatt angezeigt werden sollen.

In einem Aktionsblatt werden drei Haupttypen von Schaltflächen verwendet. Das cancelButtonTitle: bricht das Aktionsblatt vollständig ab. Das destructiveButtonTitle: zerstört oder löscht etwas; Diese Schaltfläche ist im Aktionsblatt standardmäßig auf Rot gesetzt. Das otherButtonTitles: kann alles sein und bietet oft die Möglichkeit, zu einem neuen zu navigieren viewController. Um einen der Buttons wegzulassen, übergeben Sie einfach nil als Argument für den Titel des Buttons. Der letzte Teil der Methode, showInView:, zeigt das Aktionsblatt in der angegebenen Ansicht.


Schritt 6: Antworten auf einen Tastendruck

Navigieren Sie zurück zur Delegatmethode actionSheet: clickedButtonAtIndex:. Fügen Sie den folgenden Code hinzu, um festzustellen, welche Taste gedrückt wurde:

 // Den Namen der aktuell gedrückten Schaltfläche erhalten NSString * buttonTitle = [actionSheet buttonTitleAtIndex: buttonIndex]; if ([buttonTitle isEqualToString: @ "Zerstörerischer Button"]) NSLog (@ "Zerstörerisch gedrückt -> Etwas löschen");  if ([buttonTitle isEqualToString: @ "Other Button 1"]) NSLog (@ "Other 1 gedrückt");  if ([buttonTitle isEqualToString: @ "Other Button 2"]) NSLog (@ "Other 2 gedrückt");  if ([buttonTitle isEqualToString: @ "Other Button 3"]) NSLog (@ "Other 3 gedrückt");  if ([buttonTitle isEqualToString: @ "Abbrechen-Schaltfläche"]) NSLog (@ "Abbrechen gedrückt -> ActionSheet abbrechen"); 

Wenn eine Taste gedrückt wird, actionSheet: clickedButtonAtIndex: wird genannt. Wir erhalten den Namen der Schaltfläche, die gedrückt wird, und vergleichen sie mit den verschiedenen Schaltflächentiteln des Aktionsblatts, um festzustellen, welche Taste gedrückt wurde. Das NSLog Mit jeder if -Anweisung wird protokolliert, welche Taste an der Konsole gedrückt wurde.


Schritt 7: Testen des Aktionsblatts

Klicken Produkt> Ausführen das Projekt im Simulator erstellen und ausführen. Klicken Sie auf "Aktionsblatt anzeigen", um das Aktionsblatt aufzurufen. Öffnen Sie die Konsole, indem Sie auf klicken Ansicht> Debug-Bereich> Konsole in Xcode aktivieren. Klicken Sie auf eine der Aktionsblatt-Schaltflächen, um das entsprechende Protokoll in der Konsole anzuzeigen.


Fazit

UIActionSheet wird häufig verwendet, um einem Benutzer viele Optionen anzubieten. Experimentieren mit UIActionSheet können Sie die Konfiguration finden, die für die Anforderungen Ihrer Anwendung geeignet ist. Fragen oder Kommentare? Fühlen Sie sich frei, sie in den Kommentaren zu lassen oder direkt über Twitter @aaron_crabtree zu senden.