5

Creé una nueva aplicación utilizando la plantilla de aplicación basada en Split View.ActionSheet dentro de UISplitViewController actúa de forma diferente en el modo vertical que en el modo horizontal

Luego agregué un botón de acción al controlador de navegación rootViewController llamado actionButton.

Cuando se pulsa el botón, I mostrar una ActionSheet como esto:

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]; 

Después de pulsar el botón de cuando en modo horizontal que muestra la hoja de acción en un popover que está apuntando al botón (como yo se espera que a):

Landscape Mode

Sin embargo, en el modo de retrato se ve completamente diferente y el menú aparece en la parte inferior de la popover RootViewController al igual que lo hace en el iPhone:

Portrait Mode

Mi pregunta es, ¿cómo puedo hacer el ActionSheet aparece en la parte superior, mientras que en el modo vertical, igual que lo hace cuando está en modo horizontal?

Dado que se trata de un "menú de utilidad", no está realmente vinculado directamente a los datos que se muestran, por lo que no debe formar parte del popover.

Respuesta

3

Este comportamiento es por diseño, si fuera un popover en modo retrato, entonces tendría 2 niveles de popover.

Esto es técnicamente posible implementando su propia versión de UIPopover o utilizando una que alguien ya haya escrito (WEPopover).

Sin embargo, esta es una opción de diseño pobre. Usted dice que las funciones no están relacionadas con los datos, sin embargo, uno es 'actualizar datos'. Me gustaría sustituir el botón de acción con un icono de actualización, como utiliza el Apple en 'Find My Friends':

Refresh Button

Los otros, 'Funciones de administración', si no directamente relacionada con los datos en la lista , tal vez necesita un nuevo hogar, tal vez con la vista principal de su aplicación? Es difícil decir dónde es mejor ponerlo sin saber más acerca de la estructura.

+0

Gracias por la respuesta! Lamentablemente, las imágenes que mostré eran solo maquetas y solo mostraban lo que hacía y las acciones específicas son diferentes. La aplicación real es muy similar a la aplicación de correo con la vista izquierda que muestra una lista, mientras que la vista derecha muestra detalles.Como los elementos del menú se refieren a la aplicación como un todo (y no como un detalle), creo que pertenece a la vista izquierda. Esta página ES la vista principal de mi aplicación, así que necesito encontrar un lugar para poner los elementos del menú. Con 5-6 elementos en el menú, realmente tiene que ser un menú desplegable debido a la sala limitada. – lnafziger

+0

El problema sigue siendo que tiene dos niveles de UIPopover (la lista y luego el menú). Si estuvieras dispuesto a evitar que la lista estuviera en un popover en modo retrato y solo existente a la izquierda, te recomendaría usar [MSSplitViewController] (http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad /) en lugar de usar UISplitViewController. Sin embargo, es difícil idear un mejor curso de acción sin conocer más detalles de la aplicación. –

+0

Supongo que podría usar un modal en lugar de un popover ... – lnafziger

0

Otra posibilidad es que pueda mover el botón de acción desde el borde derecho de la barra del controlador de vista raíz al borde izquierdo de la barra del controlador de vista detallada.

Por ejemplo, si el botón de acción estaba ubicado justo a la derecha de la barra vertical en su primera captura de pantalla (lo que significa que está en el borde izquierdo de la barra del controlador de vista detallada), aparecerá justo a la derecha del botón Eventos en su segunda captura de pantalla. Todavía podría llamar al método showFromBarButtonItem:animated de UIActionSheet, que mostraría su hoja de acción en modo emergente.

Todavía está la cuestión de si realmente desea dos elementos emergentes en la pantalla al mismo tiempo. Pero si lo haces, así es como hacerlo.

+0

De la Guía de programación del controlador View para iOS: "Nota: Siempre debe descartar el popover visible antes de mostrar otro controlador de vista de manera modal. cómo usar los popovers en su aplicación, consulte "Popover (solo iPad)" en las Pautas de interfaz humana de iOS ". –

Cuestiones relacionadas