UIActionSheet e UIActionSheetDelegate

In questo tutorial per iOS SDK di questo principiante, esamineremo come implementare UIActionSheet e UIActionSheetDelegate. Questa classe ti consentirà di inviare facilmente all'utente l'input visualizzando un elenco di opzioni di menu.


Passaggio 1: Impostazione del progetto

Avvia Xcode e fai clic File> Nuovo> Progetto. Fai clic su "Applicazione" sotto il pannello iOS a sinistra, quindi fai clic sull'icona "Vista singola applicazione". Fai clic su "Avanti".

Nel campo "Nome prodotto", digita "ActionSheetDemo" e inserisci un nome per il tuo identificatore aziendale, come "com.mobiletuts". Scegli "iPhone" dal menu "Famiglia di dispositivi". Deseleziona "Usa storyboard" e "Includi test unitari" e seleziona "Utilizza il conteggio dei riferimenti automatici". Fai clic su "Avanti", scegli una posizione per salvare il progetto e fai clic su "Crea".


Passaggio 2: creazione dell'interfaccia

Per prima cosa dichiariamo e definiamo un metodo che farà apparire il foglio d'azione. Fare clic sul file "ViewController.m" e aggiungere la seguente dichiarazione e definizione del metodo:

 @interface ViewController () - (void) showActionSheet: (id) mittente; // Dichiara il metodo per mostrare il foglio di azione @end @implementation ViewController ... - (void) showActionSheet: (id) sender  ... 

Cerca il viewDidLoad: metodo nello stesso file e aggiungere il codice seguente per creare un pulsante a livello di codice:

 Pulsante UIButton * = [Pulsante UIButtonWithType: UIButtonTypeRoundedRect]; button.frame = CGRectMake (20.0f, 186.0f, 280.0f, 88.0f); [button setTitle: @ "Show Action Sheet" forState: UIControlStateNormal]; [button setTitleColor: [UIColor blackColor] forState: UIControlStateNormal]; button.tintColor = [UIColor darkGrayColor]; [button addTarget: self action: @selector (showActionSheet :) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview: button];

Rendendo il metodo precedente, showActionSheet:, l'obiettivo per il pulsante, questo metodo verrà chiamato quando si preme il pulsante. Ora che abbiamo un pulsante per mostrare il foglio d'azione, passiamo alla creazione della logica per far apparire il foglio d'azione quando viene premuto il pulsante.


Step 3: Conformarsi al Delegato

Prima di poter chiamare uno qualsiasi dei UIActionSheetDelegate metodi, dobbiamo conformarci al UIActionSheetDelegate protocollo. Fare clic sul file "ViewController.h" e aggiornare la dichiarazione dell'interfaccia al seguente codice.

 @interface ViewController: UIViewController 

Conformandosi al UIActionSheetDelegate protocollo, il ViewController class può implementare ed eseguire attività necessarie quando vengono chiamati determinati metodi delegati.


Passaggio 4: aggiunta del metodo delegato

Sempre nel file "ViewController.m", aggiungere quanto segue UIActionSheetDelegate metodo.

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

Ci sono molti UIActionSheetDelegate metodi, tuttavia, ne useremo solo uno: actionSheet: clickedButtonAtIndex:. Questo è uno dei metodi delegati più comunemente implementati in quanto viene chiamato automaticamente quando si tocca uno dei pulsanti sul foglio d'azione.


Passaggio 5: mostra il foglio di azione

Cerca il showActionSheet: definizione del metodo che abbiamo aggiunto in precedenza. Aggiungi il seguente codice all'interno delle parentesi graffe per creare un foglio di azione con cinque pulsanti.

 NSString * actionSheetTitle = @ "Demo del foglio di azione"; // Action Sheet Title NSString * destructiveTitle = @ "Pulsante distruttivo"; // Action Sheet Button Titels NSString * other1 = @ "Altro pulsante 1"; NSString * other2 = @ "Other Button 2"; NSString * other3 = @ "Altro pulsante 3"; NSString * cancelTitle = @ "Annulla pulsante"; UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: actionSheetTitle delegate: self cancelButtonTitle: cancelTitle destructiveButtonTitle: destructiveTitle otherButtonTitles: other1, other2, other3, nil]; [actionSheet showInView: self.view];

Come indica il nome, un foglio di azione presenta all'utente diverse scelte e azioni corrispondenti che possono essere eseguite. Nella prima parte del metodo, creiamo sei stringhe, una che rappresenta il titolo del foglio d'azione e cinque che rappresentano i titoli dei pulsanti nel foglio d'azione. La parte successiva crea un'istanza di un foglio di azione con parametri specifici. Questi parametri includono un titolo per il foglio di azione, l'oggetto che sarà il delegato (in questo caso se stesso, il UIViewController oggetto) e i vari pulsanti da visualizzare nel foglio di azione.

Esistono tre tipi principali di pulsanti utilizzati in un foglio di azione. Il cancelButtonTitle: annulla del tutto il foglio d'azione. Il destructiveButtonTitle: distrugge o cancella qualcosa; questo pulsante si imposta automaticamente in rosso nel foglio di azione. Il otherButtonTitles: può essere qualsiasi cosa e spesso offre un'opzione come navigare in un nuovo viewController. Per omettere uno dei pulsanti, passa semplicemente nil come argomento per il titolo di quel pulsante. L'ultima parte del metodo, showInView:, mostra il foglio di azione nella vista specificata.


Passaggio 6: risposta a un pulsante Premere

Torna al metodo delegato actionSheet: clickedButtonAtIndex:. Aggiungi il seguente codice per determinare quale pulsante è stato premuto:

 // Ottieni il nome del pulsante premuto corrente NSString * buttonTitle = [actionSheet buttonTitleAtIndex: buttonIndex]; if ([buttonTitle isEqualToString: @ "Destructive Button"]) NSLog (@ "Destructive pressed -> Delete Something");  if ([buttonTitle isEqualToString: @ "Other Button 1"]) NSLog (@ "Other 1 pressed");  if ([buttonTitle isEqualToString: @ "Other Button 2"]) NSLog (@ "Other 2 pressed");  if ([buttonTitle isEqualToString: @ "Other Button 3"]) NSLog (@ "Other 3 pressed");  if ([buttonTitle isEqualToString: @ "Cancel Button"]) NSLog (@ "Cancel pressed -> Cancel ActionSheet"); 

Quando viene premuto un pulsante, actionSheet: clickedButtonAtIndex: è chiamato. Otteniamo il nome del pulsante premuto e lo confrontiamo con i diversi titoli dei pulsanti del foglio azione per determinare quale pulsante è stato premuto. Il NSLog con ciascuna istruzione if registrerà quale pulsante è stato premuto sulla console.


Passaggio 7: test del foglio di azione

Clic Prodotto> Esegui per costruire ed eseguire il progetto nel simulatore. Fai clic su "Mostra foglio di azione" per visualizzare il foglio di azione. Apri la console facendo clic Visualizza> Area debug> Attiva Console in Xcode. Fare clic su uno dei pulsanti del foglio azioni per visualizzare il registro corrispondente nella console.


Conclusione

UIActionSheet è comunemente usato per offrire all'utente molte opzioni. Sperimentare con UIActionSheet ti permetterà di trovare la configurazione che funziona per le esigenze della tua applicazione. Domande o commenti? Sentiti libero di lasciarli nella sezione commenti o inviarli direttamente via Twitter @aaron_crabtree.