Comment créer le bouton de menu physique (comme celui dans Android) menu iPhone?

StackOverflow https://stackoverflow.com/questions/7304388

  •  25-10-2019
  •  | 
  •  

Question

Je développe une application de navigation iPhone.

Dans ce que je veux créer le bouton de menu physique comme le menu comme celui dans les téléphones Android.

Le menu est accessible depuis une vue dans la hiérarchie.

Ne quelqu'un a une idée comment pouvons-nous y parvenir.

Peut-on ajouter un tiroir comme menu pour UINavigationBar?

S'il vous plaît ne suggère pas l'tabbarcontroller comme il est la dernière option.

Était-ce utile?

La solution

Ce que vous devez faire est de créer une sous-classe de UIViewController, par exemple MasterViewController. Avoir tout le MasterViewController des contrôleurs de vue. Dans le MasterViewController vous pouvez écrire du code pour créer et afficher votre point de vue du tiroir, puis tous vos contrôleurs de vue héritera de ce code et peut l'appeler sur eux-mêmes à tout moment.

Pour faire glisser la vue:

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

Autres conseils

Je pense que ce que vous voulez est juste placé le titleview de UINavigationItem à une UIView arbitraire poignée robinets utilisateur.

Cela ne doit pas être une étiquette de texte:)

Si tel est le cas, alors je vous suggère de prendre sharedInstance avec des drapeaux de suivi de la hiérarchie de la pile de contrôleur de vue. Chaque fois que l'utilisateur vient mettre à jour votre navigate sharedInstance et faire la préparation de menu personnalisé et le remplir. La bonne pratique serait réutiliser votre composant d'interface utilisateur plutôt que d'en faire nouveau sur toutes les opérations de navigation.

Vous pouvez créer une classe « DrawerView » et l'importer dans où vous voulez l'utiliser. Ensuite, vous pouvez utiliser presentModalViewController: myDrawer pour le faire apparaître quand vous en avez besoin. L'espoir qui fait sens.

Son très simple ..

Dans un u peut ajouter XIB beaucoup de points de vue à droite. maintenant ajouter deux vues principales comme afficher les données de dire et vers le bas vue bouton côté u want po. (si m nt wronge avec 4 boutons pour naviguer) garder maintenant ur ce point de vue en haut. et tous les autres hirarchy de vues u peut ajouter à ce point de vue des données.

Je pense que vous devez créer un UIViewController singleton ou UIView pour cela. Avantage du UIViewController est qu'il peut être présenté avec la méthode presentModalViewController:animated:, et aussi si vous avez besoin, vous pouvez le pousser à votre pile de navigation. En outre un avantage que vous avez une instance de UIView dans le même temps.
En utilisant le modèle singleton, vous pouvez atteindre votre classe partout.

Vérifier ce lien de la documentation officielle sur singleton en c objectif: Création d'une instance Singleton
Ou vous pouvez utiliser la macro de Matt Gallagher (parce que ce qui est très confortable à utiliser):

Si vous pouvez obtenir iOS 5 beta, je le recommande vivement. La nouvelle version de dev bêta a une extension sur UIViewController, surnommé par Apple comme contrôleurs de vue de conteneurs. Ils sont très faciles à mettre en place, et je me sers dans mon application.

contrôleurs de vue conteneurs fonctionnent comme UINavigationControllers et UITabBarControllers en ce qu'ils vous permettent d'ajouter vue enfant contrôleurs , et pas seulement des vues de l'enfant. Comme je l'ai dit, ils sont simples à mettre en place. Je vais vous expliquer comment:

  1. Créer une nouvelle classe appelée ContainerController. Ajouter une méthode d'initialisation appelé - (id)initWithNavigationController:(UINavigationController *)controller. Il devrait ressembler à la mise en œuvre de quelque chose comme ceci:

    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 raison pour laquelle nous ajoutons un contrôleur de navigation est parce qu'il maintient ce contrôleur de conteneur de transitions faisant, ce qui est plus compliqué.

  2. Dans la méthode ContainerController du viewDidLoad, créez le menu:

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

Avec cette approche (en utilisant les contrôleurs de vue de l'enfant), votre point de vue et contrôleur de navigation obtenir leur avertissement de mémoire nécessaire, chargement de la vue, et les appels de méthodes de manutention rotation en cas de besoin.

scroll top