UIActionSheet og UIActionSheetDelegate

I denne nybegynnerens iOS SDK-opplæring, vil vi gå over hvordan å implementere UIActionSheet og UIActionSheetDelegate. Denne klassen tillater deg å enkelt spørre brukeren for innspilling ved å vise en liste over menyalternativer.


Trinn 1: Prosjektoppsett

Start Xcode og klikk Fil> Nytt> Prosjekt. Klikk på "Application" under IOS-panelet til venstre og klikk deretter på "Single View Application" -ikonet. Klikk på "Neste".

I feltet "Produktnavn" skriver du "ActionSheetDemo" og skriver inn et navn for firmaidentifikatoren, for eksempel "com.mobiletuts." Velg "iPhone" fra menyen "Enhetsfamilie". Fjern merket for "Bruk Storyboards" og "Include Unit Tests", og merk av "Use Automatic Reference Counting". Klikk på "Neste", velg et sted for å lagre prosjektet, og klikk "Opprett".


Trinn 2: Grensesnittoppretting

Først erklærer vi og definerer en metode som vil ta opp handlingsarket. Klikk på "ViewController.m" -filen og legg til følgende metodedeklarasjon og -definisjon:

 @interface ViewController () - (void) showActionSheet: (id) avsender; // Deklar metode for å vise handlingsblad @end @implementation ViewController ... - (void) showActionSheet: (id) avsender  ... 

Se etter viewDidLoad: metode i samme fil, og legg til følgende kode for å lage en knapp programmatisk:

 UIButton * knapp = [UIButton buttonWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20,0f, 186,0f, 280,0f, 88,0f); [knapp setTitle: @ "Vis handlingsark" forState: UIControlStateNormal]; [knapp setTitleColor: [UIColor blackColor] forState: UIControlStateNormal]; button.tintColor = [UIColor darkGrayColor]; [knapp addTarget: self action: @selector (showActionSheet :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: button];

Ved å gjøre den forrige metoden, showActionSheet:, Målet for knappen, denne metoden vil bli kalt når knappen er tappet. Nå som vi har en knapp for å vise handlingsarket, la oss fortsette å lage logikken for å hente opp handlingsarket når du trykker på knappen.


Trinn 3: I samsvar med Delegaten

Før vi kan ringe noen av UIActionSheetDelegate metoder, vi må være i overensstemmelse med UIActionSheetDelegate protokoll. Klikk på "ViewController.h" -filen og oppdater grensesnittdeklarasjonen til følgende kode.

 @interface ViewController: UIViewController 

Ved å overholde UIActionSheetDelegate protokoll, den ViewController klassen kan implementere og utføre nødvendige oppgaver når visse delegerte metoder kalles.


Trinn 4: Legge til delegert metode

Fortsatt i "ViewController.m" -filen, legg til følgende UIActionSheetDelegate metode.

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

Det er mange UIActionSheetDelegate metoder, men vi skal bare bruke en: actionSheet: clickedButtonAtIndex:. Dette er en av de mest implementerte delegeringsmetodene, da den automatisk kalles når en av knappene på handlingsarket er tappet.


Trinn 5: Viser handlingsarket

Se etter showActionSheet: metodedefinisjon som vi la til tidligere. Legg til følgende kode i de krøllete båndene for å lage et handlingsark med fem knapper.

 NSString * actionSheetTitle = @ "Action Sheet Demo"; // Handlingsblad Tittel NSString * destructiveTitle = @ "Destructive Button"; // Handlingsblad Knapptitler NSString * other1 = @ "Other Button 1"; NSString * other2 = @ "Other Button 2"; NSString * other3 = @ "Other Button 3"; NSString * cancelTitle = @ "Cancel Button"; UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: actionSheetTitle delegate: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitles: other1, other2, other3, null]; [actionSheet showInView: self.view];

Som navnet antyder, presenterer et handlingsbilde brukeren forskjellige valg og tilsvarende handlinger som kan utføres. I første del av metoden lager vi seks strenger, en som representerer tittelen på handlingsarket og fem som representerer titler på knappene i handlingsarket. Neste del instanser et handlingsark med bestemte parametere. Disse parameterne inkluderer en tittel for handlingsarket, objektet som vil være delegat (i dette tilfellet selv-, de UIViewController objekt), og de forskjellige knappene som skal vises i handlingsarket.

Det finnes tre hovedtyper av knapper som brukes i et handlingsbilde. De cancelButtonTitle: kansellerer handlingsarket helt. De destructiveButtonTitle: ødelegger eller sletter noe Denne knappen er som standard rød i handlingsarket. De otherButtonTitles: kan være noe, og tilbyr ofte et alternativ som å navigere til en ny viewController. For å slippe ut en av knappene, pass bare inn i null som argumentet for den aktuelle knappens tittel. Den siste delen av metoden, showInView:, viser handlingsarket i den angitte visningen.


Trinn 6: Å svare på en knapp Trykk

Naviger tilbake til delegatemetoden actionSheet: clickedButtonAtIndex:. Legg til følgende kode for å bestemme hvilken knapp som ble trykket:

 // Få navnet på gjeldende trykknapp NSString * buttonTitle = [actionSheet buttonTitleAtIndex: buttonIndex]; hvis ([buttonTitle isEqualToString: @ "Destructive Button"]) NSLog (@ "Destructive pressed -> Delete Something");  hvis ([buttonTitle isEqualToString: @ "Other Button 1"]) NSLog (@ "Other 1 pressed");  hvis ([buttonTitle isEqualToString: @ "Other Button 2"]) NSLog (@ "Other 2 pressed");  hvis ([buttonTitle isEqualToString: @ "Other Button 3"]) NSLog (@ "Other 3 pressed");  hvis ([buttonTitle isEqualToString: @ "Cancel Button"]) NSLog (@ "Cancel pressed -> Cancel ActionSheet"); 

Når en knapp trykkes, actionSheet: clickedButtonAtIndex: er kalt. Vi får navnet på knappen som trykkes, og sammenligner den med de forskjellige knappene i handlingsarket for å bestemme hvilken knapp som ble trykket. De NSLog med hver hvis setningen logger hvilken knapp som ble trykket på konsollen.


Trinn 7: Testing av handlingsarket

Klikk Produkt> Kjør å bygge og kjøre prosjektet i simulatoren. Klikk "Vis handlingsark" for å hente opp handlingsarket. Åpne konsollen ved å klikke Vis> Feilsøkingsområde> Aktiver konsoll i Xcode. Klikk på en av handlingarknappene for å se den tilhørende loggen i konsollen.


Konklusjon

UIActionSheet brukes ofte til å tilby en bruker mange alternativer. Eksperimentere med UIActionSheet vil tillate deg å finne konfigurasjonen som fungerer for applikasjonens behov. Spørsmål eller kommentarer? Du er velkommen til å forlate dem i kommentarfeltet eller sende dem direkte via Twitter @aaron_crabtree.