UIActionSheet en UIActionSheetDelegate

In de iOS SDK-zelfstudie van deze beginner zullen we bespreken hoe we deze kunnen implementeren UIActionSheet en UIActionSheetDelegate. Met deze klasse kunt u eenvoudig de gebruiker om invoer vragen door een lijst met menu-opties weer te geven.


Stap 1: Projectinstellingen

Start Xcode en klik Bestand> Nieuw> Project. Klik op "Toepassing" onder het iOS-venster aan de linkerkant en klik vervolgens op het pictogram "Single View Application". Klik volgende".

Typ 'ActionSheetDemo' in het veld 'Productnaam' en voer een naam in voor uw bedrijfsidentificatie, zoals 'com.mobiletuts'. Kies 'iPhone' in het menu 'Apparaatfamilie'. Verwijder het vinkje bij 'Storyboards gebruiken' en 'Inclusief eenheidstests' en vink 'Gebruik automatische referentietelling' aan. Klik op "Volgende", kies een locatie om uw project op te slaan en klik op "Maken".


Stap 2: Creëren van interfaces

Eerst verklaren en definiëren we een methode die de actielijst zal oproepen. Klik op het bestand "ViewController.m" en voeg de volgende methode-declaratie en definitie toe:

 @interface ViewController () - (void) showActionSheet: (id) afzender; // Declareer methode om actielijst te tonen @ end @implementation ViewController ... - (void) showActionSheet: (id) afzender  ... 

Zoek naar de viewDidLoad: methode in hetzelfde bestand en voeg de volgende code toe om een ​​knop programmatisch te maken:

 UIButton * -knop = [UIButton-knopWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20.0f, 186.0f, 280.0f, 88.0f); [button setTitle: @ "Actieoverzicht tonen" forState: UIControlStateNormal]; [button setTitleColor: [UIColor blackColor] forState: UIControlStateNormal]; button.tintColor = [UIColor darkGrayColor]; [knop addTarget: self action: @selector (showActionSheet :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: knop];

Door de vorige methode te maken, showActionSheet:, het doelwit voor de knop, deze methode wordt aangeroepen wanneer op de knop wordt getikt. Nu we een knop hebben om het actielijst weer te geven, gaan we verder met het maken van de logica om het actielogboek op te roepen wanneer op de knop wordt gedrukt.


Stap 3: Conformeren aan de gedelegeerde

Voordat we een van de kunnen bellen UIActionSheetDelegate methoden, moeten we ons conformeren aan de UIActionSheetDelegate protocol. Klik op het bestand "ViewController.h" en werk de interface-aangifte bij naar de volgende code.

 @interface ViewController: UIViewController 

Door te conformeren aan de UIActionSheetDelegate protocol, de ViewController klasse kan de benodigde taken uitvoeren en uitvoeren wanneer bepaalde delegatiemethoden worden aangeroepen.


Stap 4: De deelnemersmethode toevoegen

Voeg het volgende nog toe aan het bestand "ViewController.m" UIActionSheetDelegate methode.

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

Er zijn veel UIActionSheetDelegate methoden, maar we gaan er slechts één gebruiken: actionSheet: clickedButtonAtIndex:. Dit is een van de meest gebruikte gedelegeerde methoden omdat deze automatisch wordt aangeroepen wanneer op een van de knoppen op het actielijst wordt getikt.


Stap 5: Het actielijst weergeven

Zoek naar de showActionSheet: methode-definitie die we eerder hebben toegevoegd. Voeg de volgende code in de accolades toe om een ​​actielijst met vijf knoppen te maken.

 NSString * actionSheetTitle = @ "Action Sheet Demo"; // Action Sheet Title NSString * destructiveTitle = @ "Destructive Button"; // Action Sheet Button Titels NSString * other1 = @ "Andere knop 1"; NSString * other2 = @ "Andere knop 2"; NSString * other3 = @ "Andere knop 3"; NSString * cancelTitle = @ "Annuleren knop"; UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: actionSheetTitle delegate: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitles: other1, other2, other3, nil]; [actionSheet showInView: self.view];

Zoals de naam aangeeft, presenteert een actiekaart de gebruiker verschillende keuzes en overeenkomstige acties die kunnen worden uitgevoerd. In het eerste deel van de methode maken we zes reeksen, één die de titel van het actiekaart vertegenwoordigt en vijf die de titels van de knoppen in het actielijst vertegenwoordigen. Het volgende deel geeft een actielijst weer met specifieke parameters. Deze parameters bevatten een titel voor het actielijst, het object dat de afgevaardigde zal zijn (in dit geval zelf, de UIViewController object) en de verschillende knoppen die in het actiekaart moeten worden weergegeven.

Er zijn drie hoofdtypen knoppen die worden gebruikt in een actiekaart. De cancelButtonTitle: annuleert het actiekaart helemaal. De destructiveButtonTitle: vernietigt of verwijdert iets; deze knop staat standaard rood in het actieblad. De otherButtonTitles: kan van alles zijn, en bieden vaak een optie, zoals het navigeren naar een nieuw ViewController. Om een ​​van de knoppen weg te laten, moet je gewoon nul doorgeven als argument voor de titel van die knop. Het laatste deel van de methode, showInView:, toont het actielijst in de opgegeven weergave.


Stap 6: Reageren op een knop Druk op

Navigeer terug naar de gedelegeerde methode actionSheet: clickedButtonAtIndex:. Voeg de volgende code toe om te bepalen welke knop is ingedrukt:

 // Verkrijg de naam van de huidige ingedrukte knop NSString * buttonTitle = [actionSheet buttonTitleAtIndex: buttonIndex]; if ([buttonTitle isEqualToString: @ "Destructive Button"]) NSLog (@ "Destructive pressed -> Delete Something");  if ([buttonTitle isEqualToString: @ "Other Button 1"]) NSLog (@ "Andere 1 ingedrukt");  if ([buttonTitle isEqualToString: @ "Other Button 2"]) NSLog (@ "Other 2 pressed");  if ([buttonTitel isEqualToString: @ "Andere knop 3"]) NSLog (@ "Andere 3 ingedrukt");  if ([buttonTitle isEqualToString: @ "Cancel Button"]) NSLog (@ "Annuleer ingedrukt -> ActionSheet annuleren"); 

Wanneer een knop wordt ingedrukt, actionSheet: clickedButtonAtIndex: wordt genoemd. We krijgen de naam van de knop die wordt ingedrukt en vergelijken deze met de verschillende knoptitels van het actiekaart om te bepalen op welke knop werd gedrukt. De NSLog bij elke if-instructie wordt vastgelegd welke knop op de console is ingedrukt.


Stap 7: Het actievel testen

Klik Product> Run om het project in de Simulator te bouwen en uit te voeren. Klik op "Actieoverzicht tonen" om het actielijst te openen. Open de console door op te klikken Beeld> Foutopsporingsgebied> Activeer console in Xcode. Klik op een van de knoppen voor het werkblad om het bijbehorende logboek in de console te bekijken.


Conclusie

UIActionSheet wordt vaak gebruikt om een ​​gebruiker veel opties aan te bieden. Experimenteren met UIActionSheet kunt u de configuratie vinden die geschikt is voor de behoeften van uw toepassing. Vragen of opmerkingen? Je kunt ze gerust achterlaten in de reactiesectie of ze rechtstreeks sturen via Twitter @aaron_crabtree.