Pregunta

Estoy desarrollando una aplicación basada en navegación en iPhone.

En el que quiero crear un botón de menú físico como el menú como el de los teléfonos Android.

Se puede acceder al menú desde cualquier vista de la jerarquía.

¿Alguien tiene alguna idea de cómo podemos lograr esto?

¿Podemos agregar un menú como un cajón a UinavigationBar?

No sugiera el TabBarController, ya que es la última opción.

¿Fue útil?

Solución

Lo que debes hacer es crear una subclase de UIViewController, p.ej MasterViewController. Tener todos los controladores de vista subclase MasterViewController. En el MasterViewController Puede escribir código para crear y mostrar la vista de su cajón, y luego todos sus controladores de vista heredarán ese código y pueden llamarlo en cualquier momento.

Para deslizar la vista en:

drawerView.frame = CGRectMake(0, -1*drawerView.frame.size.height, self.view.frame.size.width, whateverHeight);
[UIView beginAnimations:nil context:NULL];
drawerView.frame = CGRectMake(0, 0, self.view.frame.size.width, whateverHeight);
[UIView commitAnimations];

Otros consejos

Creo que lo que quieres es establecer el TitleView de UINAVIGITIGATIM en una vista arbitraria de UIView para manejar los grifos de usuario.

Esto no tiene que ser una etiqueta de texto :)

Si ese es el caso, te sugiero que tomes sharedInstance con banderas rastreando la jerarquía de la pila de controladores de vista. Cada vez que el usuario navegue, simplemente actualice su sharedInstance y haga la preparación del menú personalizado y llévelo. La buena práctica sería reutilizar su componente de UI en lugar de hacerlo nuevo en cada operación de navegación.

Puedes crear un "DrawerView"Clase e importarlo a donde querrás usarlo. Entonces puedes usar presentModalViewController: myDrawer Para que aparezca cuando lo necesite. Espero que tenga sentido.

Es muy simple..

En un xib puedes agregar muchas vistas correctamente. Ahora agregue dos vistas principales como la vista de datos de datos y la vista del botón lateral hacia abajo que desea. y toda la otra hirarquía de vistas que puedes agregar en esa vista de datos.

Creo que deberías crear un singleton UIViewController o UIView para esto. Ventaja del UIViewController es que se puede presentar con el presentModalViewController:animated: Método, y también si lo necesita, puede llevarlo a su pila de navegación. También una ventaja de que tienes un UIView instancia al mismo tiempo.
Usando el patrón Singleton, puede llegar a su clase en cualquier lugar.

Verifique este enlace desde la documentación oficial sobre Singleton en Objective-C: Creando una instancia de singleton
O puede usar la macro de Matt Gallagher (porque esto es muy cómodo de usar): Macro singleton

Si puedes obtener iOS 5 Beta, lo recomiendo encarecidamente. El nuevo lanzamiento de Beta Dev tiene una extensión en UIViewController, doblado por Apple como controladores de vista de contenedor. Son muy fáciles de configurar, y estoy usando uno en mi aplicación.

Los controladores de vista de contenedor funcionan como UINavigationControllers y UITabBarControllers en que le permiten agregar una vista del niño controladores, no solo vistas de niños. Como he dicho, son fáciles de configurar. Explicaré cómo:

  1. Crea una nueva clase llamada ContainerController. Agregue un método de inicialización llamado - (id)initWithNavigationController:(UINavigationController *)controller. Su implementación debería verse algo así:

    if ((self = [super init])) {
      [self addChildViewController:controller];
      controller.view.frame = CGRectMake(0, 0, 320, 420); // Leave room for the menu at bottom of the screen
      [self.view addSubview:controller.view];
    }
    

    La razón por la que estamos agregando un controlador de navegación es porque evita que este controlador de contenedores haga transiciones, lo cual es más complicado.

  2. En el ContainerController's viewDidLoad Método, cree el menú:

    [super viewDidLoad];
    
    UIView *menuWrapperView = [[[UIView alloc] init] autorelease];
    menuWrapperView.frame = CGRectMake(0, 420, 320, 40); // Place a wrapper for the menu buttons directly below the navigation controller
    
    UIButton *button1 = ...;
    UIButton *button2 = ...;
    
    [menuWrapperView addSubview:button1];
    [menuWrapperView addSubview:button2];
    
    [self.view addSubview:menuWrapperView];
    

Con este enfoque (utilizando controladores de vista infantil), sus vistas y controlador de navegación obtendrán su advertencia de memoria necesaria, carga de vistas y llamadas del método de manejo de rotación cuando sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top