UIActionSheet și UIActionSheetDelegate

În tutorialul acestui începător pentru iOS SDK, vom trece peste modul de implementare UIActionSheet și UIActionSheetDelegate. Această clasă vă va permite să solicitați utilizatorilor să introducă ușor o intrare prin afișarea unei liste de opțiuni de meniu.


Pasul 1: Configurarea proiectului

Lansați Xcode și faceți clic pe Fișier> Nou> Proiect. Faceți clic pe "Aplicație" din panoul iOS din stânga și apoi pe pictograma "Vizualizare singură aplicație". Faceți clic pe "Următorul".

În câmpul "Nume produs", tastați "ActionSheetDemo" și introduceți un nume pentru identificatorul companiei dvs., cum ar fi "com.mobiletuts". Alegeți "iPhone" din meniul "Device Family". Debifați "Utilizați Storyboards" și "Includeți testele de unitate" și bifați "Utilizați numărarea automată a referințelor". Dați clic pe "Următorul", alegeți o locație pentru salvarea proiectului și faceți clic pe "Creați".


Pasul 2: Crearea interfeței

Mai întâi declarăm și definim o metodă care va afișa foaia de acțiune. Faceți clic pe fișierul "ViewController.m" și adăugați următoarea declarație și definiție a metodei:

 @ interfață ViewController () - (void) showActionSheet: (id) expeditor; // Declare metoda pentru a afișa foaia de acțiune @end @implementation ViewController ... - (void) showActionSheet: (id) sender  ... 

Căutați viewDidLoad: în același fișier și adăugați următorul cod pentru a crea un buton programabil:

 Butonul UIButton * = [butonul UIButtonWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20.0f, 186.0f, 280.0f, 88.0f); [buton setTitle: @ "Afișare foaie de acțiune" pentruState: UIControlStateNormal]; [butonul setTitleColor: [UICcolor blackColor] pentruState: UIControlStateNormal]; button.tintColor = [UICoror întunericGrayColor]; [buton addTarget: acțiune auto: @selector (showActionSheet :) forControlEvents: UIControlEventTouchUpInside]; [auto.view addSubview: buton];

Prin efectuarea metodei anterioare, showActionSheet:, ținta pentru buton, această metodă va fi apelată când butonul este apăsat. Acum, când avem un buton pentru a afișa foaia de acțiune, să trecem la crearea logicii pentru a afișa foaia de acțiune când apăsați butonul.


Pasul 3: Conform cu delegatul

Înainte de a putea apela oricare UIActionSheetDelegate metode, trebuie să ne conformăm UIActionSheetDelegate protocol. Faceți clic pe fișierul "ViewController.h" și actualizați declarația de interfață la următorul cod.

 @ interfață ViewController: UIViewController 

Prin conformarea cu UIActionSheetDelegate protocol, ViewController clasa poate implementa și executa sarcinile necesare atunci când sunt chemate anumite metode delegate.


Pasul 4: Adăugarea metodei Delegate

Încă în fișierul "ViewController.m", adăugați următoarele UIActionSheetDelegate metodă.

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

Sunt multi UIActionSheetDelegate metode, cu toate acestea, vom folosi doar unul: actionSheet: clickedButtonAtIndex:. Aceasta este una dintre metodele delegate cele mai frecvent implementate, deoarece este apelată automat atunci când unul dintre butoanele de pe foaia de acțiune este atins.


Pasul 5: Afișarea foii de acțiune

Căutați showActionSheet: definirea metodei pe care am adăugat-o mai devreme. Adăugați următorul cod în acolade pentru a crea o foaie de acțiune cu cinci butoane.

 NSString * actionSheetTitle = @ "Demo Sheet de acțiune"; // Titlul fișei acțiunii NSString * destructiveTitle = @ "Butonul distructiv"; // Titluri ale butoanelor pentru acțiuni NSString * other1 = @ "Butonul 1"; NSString * other2 = @ "Alt buton 2"; NSString * other3 = @ "Alt buton 3"; NSString * cancelTitle = @ "Butonul Anulare"; UIActionSheet * actionSheet = [[UIActionSheet alocare] initWithTitle: actionSheetTitle delegat: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitle: other1, other2, other3, nil]; [actionSheet showInView: self.view];

După cum indică numele, o foaie de acțiune prezintă utilizatorului opțiuni diferite și acțiuni corespunzătoare care pot fi efectuate. În prima parte a metodei, vom crea șase șiruri, una care reprezintă titlul foii de acțiune și cinci care reprezintă titlurile butoanelor din foaia de acțiune. Următoarea parte reprezintă o listă de acțiuni cu parametri specifici. Acești parametri includ un titlu pentru foaia de acțiune, obiectul care va fi delegatul (în acest caz de sine, UIViewController obiect) și diferitele butoane care vor fi afișate în foaia de acțiune.

Există trei tipuri principale de butoane utilizate într-o foaie de acțiune. cancelButtonTitle: anulează complet foaia de acțiune. destructiveButtonTitle: distruge sau șterge ceva; acest buton implicit este roșu în foaia de acțiune. otherButtonTitles: poate fi orice, și de multe ori oferă o opțiune cum ar fi navigarea la un nou viewController. Pentru a renunța la unul dintre butoane, pur și simplu treceți în zero ca argument pentru titlul butonului. Ultima parte a metodei, showInView:, afișează foaia de acțiune din vizualizarea specificată.


Pasul 6: Răspundeți la apăsarea unui buton

Navigați înapoi la metoda delegat actionSheet: clickedButtonAtIndex:. Adăugați următorul cod pentru a determina ce buton a fost apăsat:

 // Obțineți numele butonului curent apăsat NSString * buttonTitle = [butonul actionSheetTitleAtIndex: buttonIndex]; dacă ([buttonTitle esteEqualToString: @ "Buton distructiv"]) NSLog (@ "Distresiv apăsat -> Șterge ceva");  dacă ([buttonTitle esteEqualToString: @ "Altul Buton 1"]) NSLog (@ "Altele 1 apăsat");  dacă ([buttonTitle esteEqualToString: @ "Altul buton 2"]) NSLog (@ "Altele 2 apăsate");  dacă ([buttonTitle esteEqualToString: @ "Alt Buton 3"]) NSLog (@ "Altele 3 apăsate");  dacă ([buttonTitle esteEqualToString: @ "Cancel Button"]) NSLog (@ "Anulare apăsată -> Anulare ActionSheet"); 

Când este apăsat un buton, actionSheet: clickedButtonAtIndex: se numește. Obțineți numele butonului care este apăsat și comparați-l cu diferitele titluri ale butoanelor de acțiune pentru a determina ce buton a fost apăsat. NSLog cu fiecare instrucțiune dacă se va înregistra care buton a fost apăsat pe consola.


Pasul 7: Testarea foii de acțiune

Clic Produs> Rulați pentru a construi și a executa proiectul în Simulator. Faceți clic pe "Afișați foaia de acțiune" pentru a afișa foaia de acțiune. Deschideți consola dând clic pe Vizualizare> Zona de depanare> Activare consola în Xcode. Faceți clic pe unul dintre butoanele foii de acțiune pentru a vedea jurnalul corespunzător din consola.


Concluzie

UIActionSheet este folosit în mod obișnuit pentru a oferi unui utilizator mai multe opțiuni. Experimentarea cu UIActionSheet vă va permite să găsiți configurația care funcționează pentru nevoile aplicației dvs. Întrebări sau comentarii? Simțiți-vă liber să le lăsați în secțiunea comentarii sau să le trimiteți direct prin Twitter @aaron_crabtree.

Cod