J'ai laissé tomber un UINavigationBar
dans UIInterfaceBuilder
. Je présente cette vue de manière modale et je veux juste qu'un UIBackBarButton
revienne à ma dernière vue. J'ai une sortie et une propriété à ce UINavigationBar
déclarées. J'ai pensé que dans ma méthode viewDidLoad
, je pourrais créer un UIBackButton
comme ceci:
UIBarButtonItem *backButton =
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered
target:self
action:@selector(goBack)];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
Mais je ne vois pas mon UIBackBarButtonItem
sur le UINavigationBar
. Je pense que je fais quelque chose de mal ici car je ne pense pas que mon UINavigationBar
sache que j'essaye d'y ajouter ce UIBackBarButtonItem
de cette manière. Dois-je créer un NSArray
, y mettre le bouton et définir à la place des éléments pour la barre de navigation?
Je ne comprends pas comment la propriété navigationItem fonctionne par rapport aux setItems de UINavigationBar
également. Toute aide serait appréciée. Merci!
Vous essayez de définir l'élément de bouton de retour dans une vue modale qui n'ajoute pas de backBarButtonItem. C'est ce qui empêche le Button (ou tout autre bouton de retour) de ne pas s'afficher. Le backBarButtonItem est principalement destiné à être utilisé avec les contrôleurs Pushed View qui ont un bouton Retour ajouté à partir du parent (élément suivant ci-dessous) lorsque vous appuyez sur un nouveau contrôleur de vue (élément supérieur). Le Apple UINavigationItem Documentation dit:
Lorsque cet élément est l'élément arrière de la barre de navigation - lorsqu'il s'agit de l'élément suivant sous l'élément supérieur - il peut être représenté sous la forme d'un bouton Précédent dans la barre de navigation. Utilisez cette propriété pour spécifier le bouton de retour. La cible et l'action de l'élément de bouton de la barre arrière que vous définissez doivent être nulles. La valeur par défaut est un élément de bouton de barre affichant le titre de l'élément de navigation.
Pour obtenir le bouton Retour sur le côté gauche comme vous le souhaitez, essayez de changer
self.navigationItem.backBarButtonItem = backButton;
à
self.navigationItem.leftBarButtonItem = backButton;
faire un appel comme celui-ci à partir d'un contrôleur de vue
{
NextViewController* vcRootView = [[NextViewController alloc] initWithNibName:@"NextView" bundle:[NSBundle mainBundle]];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:vcRootView];
[vcRootView release];
[self.navigationController presentModalViewController:navController animated:YES];
[navController release];
}
présentera NextViewController comme une vue modale sur la vue appelante et NextViewController aura un navigationController pour cela.
Dans le fichier d'implémentation NextViewController, tout ce dont vous avez besoin est ceci
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self
action:@selector(barButtonBackPressed:)];
self.navigationItem.leftBarButtonItem = backButton;
[backButton release];
}
-(void)barButtonBackPressed:(id)sender{
[self dismissModalViewControllerAnimated:YES];
}
pour avoir le bouton retour pour fermer la vue modale. J'espère que ça aide.
Utilisez l'extrait de code ci-dessous:
//Add button to NavigationController
UIBarButtonItem *backButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@“back”, @"")
style:UIBarButtonItemStylePlain
target:self
action:@selector(goBack)];
self.navigationItem.leftBarButtonItem = backButton;
//Perform action on back Button
- (void) goBack { // Go back task over-here
}
Les différents types de styles disponibles sont:
UIBarButtonItemStylePlain, UIBarButtonItemStyleBordered, UIBarButtonItemStyleDone
Vous pouvez utiliser ces setters sans créer de nouveau UIBarButtonItem:
[self.navigationItem.leftBarButtonItem setAction:@selector(doBackButton:)];
[self.navigationItem.leftBarButtonItem setTarget:self];