Comment créer le bouton de menu physique (comme celui dans Android) menu iPhone?
-
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.
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 Si vous pouvez obtenir iOS 5 beta, je le recommande vivement. La nouvelle version de dev bêta a une extension sur contrôleurs de vue conteneurs fonctionnent comme Créer une nouvelle classe appelée 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é. Dans la méthode 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.
Ou vous pouvez utiliser la macro de Matt Gallagher (parce que ce qui est très confortable à utiliser):
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. 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:
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];
}
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];