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.
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"..
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.
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.
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.
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.
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.
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.
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.