18

La documentazione di Apple per UIActionSheet mi crea confusione. Innanzitutto, nelle linee guida per l'interfaccia umana dell'iPad, è riportato:Utilizzo di UIActionSheet su iPad

Per ulteriori informazioni sull'utilizzo di un foglio di azione nel codice, consultare "Uso di Popup per visualizzare il contenuto" nella Guida alla programmazione dell'iPad.

Tuttavia, nella sezione "Utilizzo di Popovers per visualizzare contenuto", non fa menzione di fogli di azione! Mi sto perdendo qualcosa qui?

http://developer.apple.com/library/ios/#documentation/General/Conceptual/iPadHIG/UIElements/UIElements.html#//apple_ref/doc/uid/TP40009446-CH6-SW9

La mia domanda principale è questa: sul iPad, qual è la differenza tra un UIPopoverController e UIActionSheet? Se un UIActionSheet si presenta automaticamente all'interno di un UIPopoverController, c'è qualche ragione per usare UIActionSheet? Vedo come il suo delegato e la creazione automatica di pulsanti facciano meno righe di codice, ma da un POV di usabilità, c'è una differenza?

Inoltre, la visualizzazione del mio foglio di lavoro con animazione non funziona affatto. Sembra e agisce esattamente come un foglio di azione presentato senza animazione (che è esattamente lo stesso come se io stavo usando un UIPopoverController e nessun actionSheet). Ecco il mio codice:

UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"An unsaved property already exists. You must assign a name to this property before creating a new property. Would you like to:" 
    delegate:self 
    cancelButtonTitle:nil 
    destructiveButtonTitle:@"Overwrite" 
    otherButtonTitles:@"Open unsaved property", nil]; 

[action showFromRect:CGRectMake(0, 0, 200, 200) inView:self.mainSplitViewController.view animated:NO]; 

Come dovrei ottenere un actionSheet che sembra l'actionSheet animato campione nella documentazione di Apple (dall'applicazione mappe, in cui si aggiunge una località a un contatto)?

Potrei finire per utilizzare un avviso per questo anziché un popover o un foglio di azione, ma sarebbe comunque utile capire questo.

Grazie!

risposta

22

Prima di tutto, UIActionSheet esisteva prima di UIPopoverController e UIPopoverController non è disponibile su iPhone, quindi è utile per retrocompatibilità e applicazioni universali.

Inoltre, un UIActionSheet non è necessariamente presentato in un popover, in particolare, se lo si mostra da uno UIBarButtonItem o UIToolbar che è già all'interno di un popover. Viene quindi presentato in modo simile a quello dell'iPhone (che scorre dalla parte inferiore del controller della vista). Secondo HIG, non devi presentare più popover contemporaneamente (una volta ho rifiutato un'app per questo), quindi nei casi in cui un controller di visualizzazione può trovarsi all'interno di un popover (come in un'app di visualizzazione divisa standard), puoi vuoi usare i fogli di azione, se possibile. Ovviamente ci sono molti casi in cui non è possibile sostituire un popover con un foglio di azione, perché un foglio di azione mostra solo un elenco di pulsanti e un titolo, mentre un popover può visualizzare qualsiasi controller di visualizzazione.

Penso che il parametro animated abbia un effetto solo quando un foglio di azione viene presentato nel modo "classico" (come su iPhone).

+2

+1 per la risposta. Molto utile! Hai detto che * Ovviamente ci sono molti casi in cui non è possibile sostituire un popover con un foglio di azione, perché un foglio di azione mostra solo un elenco di pulsanti e un titolo, mentre un popover può visualizzare qualsiasi controller di visualizzazione. *. Quindi, non è possibile presentare un selettore di date, sono errato? Grazie. –