10

J'ai un UIView avec un NavigationBar et j'aimerais ajouter un bouton qui ressemble au style d'un bouton Précédent. Je n'utilise pas un UINavigationController et je me demandais si cela pourrait être fait sans elle?Dessiner un bouton Retour personnalisé sur l'iPhone Barre de navigation

Le style du bouton devrait ressembler à ceci: alt text

Merci

+2

@casperOne Mis à part la fermeture d'une question près de 2 ans après sa réponse, pourquoi avez-vous fermé cette question? La réponse acceptée dans http://stackoverflow.com/questions/227078 suggère d'utiliser une image, alors que la réponse ci-dessous de Mike Weller est beaucoup plus élégante. Sans compter que la réponse ici supportera les nouveaux périphériques (par exemple, je n'ai pas changé cet exemple de code quand l'affichage de la rétine a été lancé et qu'il fonctionne toujours.) Une image montrerait une finition basse résolution). –

Répondre

16

Vous devez configurer une pile personnalisée de UINavigationItem objets et les pousser à la UINavigationBar. C'est la seule façon que je connaisse pour obtenir un vrai bouton de retour. Je ne l'ai pas testé ce code, mais vous devriez faire quelque chose comme ceci:

UINavigationItem *previousItem = 
    [[[UINavigationItem alloc] initWithTitle:@"Back title"] autorelease]; 

UINavigationItem *currentItem = 
    [[[UINavigationItem alloc] initWithTitle:@"Main Title"] autorelease]; 

[navigationBar setItems:[NSArray arrayWithObjects:previousItem, currentItem, nil] 
       animated:YES]; 

Pour gérer lorsque les boutons sont pressés, vous devez vous fixer en tant que délégué de la barre de navigation et mettre en œuvre les délégués UINavigationBarDelegate.

+0

FYI: la définition du délégué d'un objet navigationBar géré par un objet navigationController déclenche une exception: '*** Terminaison de l'application due à l'exception non interceptée 'NSInternalInconsistencyException', raison: 'Impossible de définir manuellement le délégué sur un objet UINavigationBar géré par un contrôleur.'» – stigi

+0

quel est le currentItem? – scientiffic

1

Vous pouvez également mettre à jour ceci en modifiant le backBarButtonItem sur le contrôleur de vue précédent (pas celui actuellement affiché).

+0

Salut, je pense que votre réponse peut me aider à mon problème, s'il vous plaît comment utiliser le backBarButtonItem dans mon code, en supposant que cela est mon code dans la vue précédente: - (IBAction) goToRechercherView \t { \t \t rechercherViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; \t \t [self presentModalViewController: rechercherViewController animé: OUI]; \t } – Malloc

Questions connexes