0

Dans la vue, je veux le modifier car j'ai le code suivant, mais il échoue.Comment modifier le bouton de retour sur un UINavigationControler

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    //Logout button 
    UIBarButtonItem * logout = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(goBack)]; 
    logout.title = @"Logout"; 
    nav_delegate.navigationController.navigationItem.leftBarButtonItem = logout; 
    [logout release]; 
} 

Nous vous remercions de votre aide.

Répondre

1

Voici la réponse. Dans le contrôleur de vue:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.title = @"X"; 
    //Logout button 
    UIBarButtonItem * logout = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style: UIBarButtonItemStylePlain target:self action:@selector(goBack)]; 
    self.navigationItem.leftBarButtonItem = logout; 
    [logout release]; 
} 
1

Réglez le backBarButtonItem sur le contrôleur de vue précédent (celui sur lequel vous reviendrez lorsque vous appuierez sur le bouton de retour).

+0

J'ai ajouté le code sur la méthode viewDidLoad du contrôleur précédent et il a échoué. Je me suis assuré de remplacer nav_delegate.navigationController par self. Merci quand même. –

+0

Également utilisé backBarButtonItem –

+0

Je ne suis pas sûr de ce que vous êtes en train de coder, mais peut-être un contrôleur de vue modale lui conviendrait mieux. Quand je pense à "Annuler", je pense aux contrôleurs de vue modale au lieu des contrôleurs de navigation. –

3

mise en œuvre backBarButtonItem est pour le contrôleur super vue qui utilise pushViewController: subViewController.

Par exemple, si vous avez poussé un contrôleur de vue pour son contrôleur super vue Déconnexion:

[self.navigationController pushViewController:subViewController animated:YES]; 

Ensuite, vous devriez avez mis en place backBarButtonItem dans la super vue, qui est vue Déconnexion, pas dans le subViewController poussé.

Ainsi, pour mettre en œuvre backBarButtonItem, vous le faites en super vue Déconnexion, comme:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:logoutViewTitle style:UIBarButtonItemStyleBordered target:nil action:nil]; 

Vous pouvez le faire - (void) viewDidLoad pour une utilisation statique, ou - (void) viewWillAppear :(BOOL) animé pour une utilisation dynamique, pour définir le titre sans allouer et initialiser.

Un conseil supplémentaire: Dans le constructeur d'interface, il y a un champ de saisie pour le titre backBarButtonItem. Mais si vous n'avez pas entré, vous devez allouer et initialiser le backBarButton avec le titre dans les fichiers .m, comme le code ci-dessus. Si vous avez entré le titre pour une utilisation statique, je crois que vous pouvez le changer en utilisant simplement:

[self.navigationItem.backBarButtonItem setTitle:logoutViewTitle]; 

espère que cela a aidé.

+0

Merci pour la réponse. Je pense que j'ai compris ce que tu voulais dire mais changer la propriété dans UINavigationController n'a jamais fonctionné. Cela fonctionne parfaitement en le modifiant sur l'UIView que je pousse. –