5

Ho creato una nuova applicazione utilizzando il modello dell'applicazione basato su visualizzazione divisa.ActionSheet all'interno di UISplitViewController si comporta in modo diverso in modalità Ritratto rispetto alla modalità Paesaggio

Ho quindi aggiunto un pulsante di azione al controller di navigazione rootViewController denominato actionButton.

Quando si preme sul pulsante, visualizzare un ActionSheet simili:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
    delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil 
    otherButtonTitles:@"Admin Functions", @"Refresh Data", nil]; 
[actionSheet showFromBarButtonItem:actionButton animated:YES]; 
[actionSheet release]; 

Dopo preme il pulsante quando in modalità orizzontale visualizza il foglio di azione in un popover che sta puntando al pulsante (come aspettavo che):

Landscape Mode

Tuttavia, in modalità verticale che sembra completamente diverso e il menu viene dal fondo del popover RootViewController esattamente come avviene su iPhone:

Portrait Mode

La mia domanda è, come faccio a rendere l'ActionSheet visualizzate nella parte superiore, mentre in modalità verticale, proprio come fa quando è in modalità orizzontale?

Poiché questo è un "menu di utilità", non è realmente legato direttamente ai dati visualizzati, quindi non dovrebbe far parte del popover.

risposta

3

Questo comportamento è di progettazione, se fosse un popover in modalità verticale avresti quindi 2 livelli di popover.

Ciò è tecnicamente possibile implementando la propria versione di UIPopover o utilizzando qualcuno che ha già scritto (WEPopover).

Tuttavia, questa è una scelta di progettazione scadente. Si dice che le funzioni non sono correlate ai dati, tuttavia uno è 'Aggiorna dati'. Vorrei sostituire il pulsante di azione con l'icona di aggiornamento come quello Apple utilizza in 'trovare i miei amici':

Refresh Button

Gli altri, 'Funzioni Admin', se non direttamente legate ai dati nella lista , forse ha bisogno di una nuova casa, forse con la vista principale della tua app? È difficile dire dove è meglio metterlo senza saperne di più sulla struttura.

+0

Grazie per la risposta! Sfortunatamente, le immagini che ho mostrato erano solo prototipi e pensavano semplicemente a mostrare cosa stava facendo e le azioni specifiche sono diverse. L'app effettiva è molto simile all'app Mail con la vista sinistra che mostra un elenco mentre la vista destra mostra i dettagli.Poiché le voci di menu si riferiscono all'applicazione nel suo complesso (e non all'elemento di dettaglio), ritengo che appartenga alla vista sinistra. Questa pagina è la vista principale della mia app, quindi ho bisogno di trovare un posto dove mettere le voci del menu. Con 5-6 voci nel menu, è necessario un menu a discesa a causa della stanza limitata. – lnafziger

+0

Rimane il problema che hai due livelli di UIPopover (la lista e poi il menu). Se fossi disposto a evitare che la lista fosse in un popover in modalità verticale e appena esistente sulla sinistra, ti consiglio di utilizzare [MSSplitViewController] (http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad /) invece di utilizzare UISplitViewController. È difficile definire una linea d'azione migliore senza conoscere più specifiche delle app, comunque. –

+0

Immagino di poter usare un modale invece di un popover .... – lnafziger

0

Un'altra possibilità è che è possibile spostare il pulsante di azione dal bordo destro della barra del controller della vista radice al bordo sinistro della barra del controller della vista di dettaglio.

Ad esempio, se il pulsante di azione si trovava a destra della barra verticale nella prima schermata (ovvero si trova sul bordo sinistro della barra del controller della vista di dettaglio), quando si ruota in modalità verticale, appare proprio a destra del pulsante Eventi nella seconda schermata. È comunque possibile chiamare il metodo showFromBarButtonItem:animated di UIActionSheet, che visualizzerà il foglio azioni in modalità popup.

C'è ancora la domanda se vuoi davvero due popover sullo schermo allo stesso tempo. Ma se lo fai, questo è come farlo.

+0

Dalla Guida alla programmazione del controller di visualizzazione per iOS: "Nota: si dovrebbe sempre ignorare il popover visibile prima di visualizzare un altro controller di vista in modo modale. come usare i popover nella tua applicazione, vedi "Popover (solo iPad)" nelle linee guida per l'interfaccia umana iOS. " –

Problemi correlati