web-dev-qa-db-fra.com

Ajout d'un élément de bouton de barre à gauche de l'élément de navigation

Je suis le this tutoriel sur l’ajout d’une barre de navigation latérale à une application.

Dans le code source donné, ils ont fourni les dispositions de scénarimage prédéfinies. L'une d'elles est une vue comportant un "élément de navigation" et un "élément de bouton de barre" qui apparaît à gauche de la barre de navigation supérieure.

J'essaie de faire la même chose dans mon application, mais l'élément de bouton continue à apparaître automatiquement à droite et je ne trouve aucun moyen de le déplacer vers la gauche.

J'ai remarqué, dans l'exemple fourni dans le tutoriel, que cette option de sortie option leftBarButton est donnée:

enter image description here

Et quand je vérifie le mien, ça ressemble à ça:

enter image description here

Il n’existe pas de contrôleur de navigation en raison du fonctionnement de SWRevealView. Lorsque je lance l'application, je vois le bouton et il fonctionne parfaitement. Le seul problème, c'est qu'il se trouve du côté droit. J'ai comparé mon point de vue avec l'exemple et je n'arrive pas à trouver de différence.

Toute aide est appréciée.

EDIT Cela pourrait aider. Dans les storyboards, voici à quoi ressemble l'exemple de travail:

enter image description here

Et voici à quoi ressemble le mien

enter image description here

11
LondonAppDev

Faites glisser BarButtonItem et placez le côté gauche de votre élément de navigation.

18
Amit

Je ne pouvais pas trouver un moyen de le gérer dans Storyboard. Alors je l'ai codé dans la fonction ViewDidLoad de mon viewcontroller en ajoutant le code suivant

self.navigationItem.leftBarButtonItem = _sidebarButton;
self.navigationItem.rightBarButtonItem = nil;
7
Chesh

1/. Faites un clic droit sur Storyboard > Open as > Source Code

2 /. Trouvez votre contrôleur de vue par Ctrl + F : <name of View Controller>

3 /. Trouver navigationItem> Vous verrez barButtonItem comme ceci:

<navigationItem key="navigationItem" title="Title" id="n9s-Cu-Dtc">
   <barButtonItem key="rightBarButtonItem" title="Item" image="menu-icon-2.png" id="aN6-4T-o4T"/>
</navigationItem>

4 /. Remplacez key="rightBarButtonItem" par key="leftBarButtonItem"

Enregistrer et terminer. Faites un clic droit sur Storyboard > Open as > Builder Interface

5
SLyHuy

J'ai eu exactement le même problème. Il est apparu visuellement que je n'avais pas de barre de navigation sur mon contrôleur de vue principal, mais c'était là. 

J'ai finalement découvert que si je cliquais d'abord sur le contrôleur de vue de navigation, la barre de navigation du contrôleur de vue principale apparaissait. J'ai placé un élément de la barre de boutons dans la barre de navigation, mais je l'ai ensuite supprimé (il en fallait juste un moment pour activer les images dans la barre de navigation). J'ai ensuite pu faire glisser l'image de menu que j'ai créée à partir de mes images.xcassets sur la barre de navigation du contrôleur de la vue principale pour créer l'élément de barre de boutons approprié. Il vous suffit de sélectionner l’icône Médiathèque dans la section droite de la section Utilitaires pour rechercher les images et les utiliser. Ensuite, définissez simplement la prise de référencement sidebarButton dans le fichier myviewcontroller.h associé. Vous pouvez le faire rapidement en sélectionnant l’image de menu sur leurs barres de navigation tout en maintenant votre touche de contrôle enfoncée, puis en la faisant glisser sur la propriété sidebarButton dans le fichier viewcontroller.h associé avec le mode écran divisé de l’assistant éditeur.

Sur les autres contrôleurs de vue de mon application (similaires aux contrôleurs de vue Photo et Carte), il me suffisait de faire en sorte que les contrôleurs de vue aient le paramètre Barre de navigation translucide pour leur barre supérieure dans la section attributs du contrôleur de vue (dans les utilitaires de storyboard). Les barres de navigation identiques du contrôleur de la vue principale sont ensuite apparues. Je devais également créer de la même manière les éléments de la barre de boutons d’image de menu et définir la prise de référencement sidebarButton dans leur fichier * .h. Yu peut le faire rapidement en sélectionnant l'image du menu sur ses barres de navigation, puis en sélectionnant le signe de prise de référencement (+) et en le faisant glisser sur l'icône de cercle jaune du contrôleur de vue tout en maintenant la touche Ctrl enfoncée. 

Je ne sais pas si j'ai oublié quelque chose dans les instructions, mais cela a fonctionné pour moi.

2
sirhcmcd

Vous pouvez également ajouter des boutons du côté gauche par code:

NSMutableArray *leftBtns = [[NSMutableArray alloc] init];

UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"LeftButton"] style:UIBarButtonItemStylePlain target:self action:@selector(leftButtonPressed)];
[leftBtns addObject:leftBtn];

[self.navigationItem setLeftBarButtonItems:leftBtns animated:NO];

// méthode

-(void)leftButtonPressed
{
    NSLog(@"Left Button Tapped");
}
1
David Douglas
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];

    [button setImage:[[UIImage imageNamed:@"BtnBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
    [button.imageView setTintColor:[UIColor whiteColor]];
    [button addTarget:self action:@selector(buttonClicked:)
     forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]
                                   initWithCustomView:button];
    self.navigationItem.leftBarButtonItem = buttonItem;
0
saraman