Affichage du bouton précédent

Salut à  tous,


 


J'ai un problème je n'arrive pas à  afficher mon bouton précédent (de type bouton système, qui reviens sur la vue précédente) dans la barre de menu (qui est pourtant elle bien affichée).


 


J'ai essayé les choses suivantes sans résultats



self.navigationItem.backBarButtonItem.enabled=YES;


self.navigationItem.hidesBackButton = NO;

Est ce que c'est une propriété qu'il faut régler dans le storyboard ou bien est-ce une autre ligne de code ?


Réponses

  • Quand tu dis barre de menu c'est bien la navigationBar de ton navigationController?


  • Tout à  fait


  • Normalement le bouton apparait tout seul quand tu fais ton push? As tu custom ta navigationController? Tu fais le push a partir du storyboard?


  • Oui c'est bien ça que je ne comprends pas ça doit apparaitre tout seul logiquement.


     


    Non j'ai pas personnalisé mon Navigation Controller.


     


    Pour les liaisons, j'ai une modal entrant dans la NavController et une liaison sortante, mais je ne sais de quel type elle est (c'est la liaison de base qui relie une NavController à  la vue qui l'utilise, cf plus bas l'icône qui la représente)


     


     


     


     


  • Joanna CarterJoanna Carter Membre, Modérateur
    avril 2015 modifié #6
    Le bouton "précédent" prend son texte du titre du navigationItem du viewController précédent, jusqu'au premier viewController du UINavigationController. Si le viewController est le premier, il n'y aura pas de bouton.


    Je viens de relire ta question - tu disait que c'est une présentation modal ? Du coup, il n'y aura pas de bouton précédent.
  • Oui il présente la navigation controller dans une modal. ça pourquoi pas par contre l'icone que tu affiche c'est pour la rootviewcontroller donc pas de bouton back si tu cherches a afficher le bouton back sur ta navigation controller pour dismiss la modal ça ne se fera pas nativement.


  • Bonjour, ma vue n'est pas la 1ère, mais la 2nde et justement j'aimerais revenir à  la 1ère avec le bouton "retour".


     


    Il ne faut donc pas la mettre en modal mais en push la liaison ?


     


    Je cherche vraiment un moyen d'avoir "retour" de la façon la plus simple possible et sans que ce soit un truc personnalisé.


     


    Voila ci dessous comment se présente mon storyboard


     


  • Joanna CarterJoanna Carter Membre, Modérateur
    Je crois que ce que tu veux faire est, en effet, un modal mais pour le faire, tu n'as pas besoin d'un UINavigatonController.
  • Ben77650Ben77650 Membre
    avril 2015 modifié #10

    Heu non, un modal sans navigation Controller ne m'affiche même pas la navigationBar :(


  • Tu mets une relation push oui pour avoir le navigation bar avec le bouton retour. Si tu décides de faire une vue modal, alors tu peux simuler un navigation bar en l'incorporant toi même dans ton viewController et ajouter directement un bar button item dessus qui aura pour rôle de faire un retour à  l'aide de la méthode appropriée [self dismissviewController:completion]. Quelque chose comme ceci.


  • Je viens d'essayer avec la relation push et il aime pas vraiment ça


     


    Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'forgot_password'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

     



     


     


    Et ça me le met que je relie la segue au Navigation Controller ou que je le relie directement au 2nd controller


  • Joanna CarterJoanna Carter Membre, Modérateur
    Tu n'as pas renommé le segue ?
  • Non dans les 2 cas elle a le même nom


  • Joanna CarterJoanna Carter Membre, Modérateur
    avril 2015 modifié #15

    Solution simple - storyboard ci-joint


     


    Code :



    @implementation MdpOublieViewController

    - (IBAction)envoyerLaDemande:(UIButton *)sender
    {
    // récupérer le mot de passe

    [self dismissViewControllerAnimated:YES completion:nil];
    }

    - (IBAction)annuler:(UIBarButtonItem *)sender
    {
    [self dismissViewControllerAnimated:YES completion:nil];
    }

    @end

    MDP.png 331.3K
  • Bon dans ton archi tu as


     


    [Controller 1] -> (action modal) -> [NavigationController] -> (Action rootviewcontroller)-> [Controller 2] 


     


    Je vois pas en quoi ton Controller 2 n'est pas le premier controller de ton Navigation controller donc le bouton n'est pas présent ce qui est logique.


     


    Du coup il faut que créer un bouton retour toi même tu as le choix soit tu le fait dans un toolbarcontroller soit dans une view custom soit tu l'ajoute directement dans ton controller sans faire de barre ça c'est ton choix.


     


    Par contre je ne vois pas du tout l'utilité de la NavigationController ici c'est un peu gros d'ajouter tout un système de Navigation juste pour designer une barre et un bouton...


  • Joanna CarterJoanna Carter Membre, Modérateur
    avril 2015 modifié #17


    Par contre je ne vois pas du tout l'utilité de la NavigationController ici c'est un peu gros d'ajouter tout un système de Navigation juste pour designer une barre et un bouton...



    C'est pour cette raison que j'ai ajouté, dans ma solution, un UINavigationBar dans la deuxième vue :)


  • Bon dans ton archi tu as


     


    [Controller 1] -> (action modal) -> [NavigationController] -> (Action rootviewcontroller)-> [Controller 2] 


     


    Je vois pas en quoi ton Controller 2 n'est pas le premier controller de ton Navigation controller donc le bouton n'est pas présent ce qui est logique.


     


    Du coup il faut que créer un bouton retour toi même tu as le choix soit tu le fait dans un toolbarcontroller soit dans une view custom soit tu l'ajoute directement dans ton controller sans faire de barre ça c'est ton choix.


     


    Par contre je ne vois pas du tout l'utilité de la NavigationController ici c'est un peu gros d'ajouter tout un système de Navigation juste pour designer une barre et un bouton...




     


    Pour faire simple, imaginons que l'utilisateur ai cliqué malencontreusement et se retrouve sur le formulaire de demande de nouveau mot de passe.


     


    J'aimerais qu'il est la possibilité de revenir en arrière, c'est aussi simple que ça.


     


    Et je veut que ça soit fait de la manière la plus simple possible, quitte à  me passer de Navigation Controller

  • Joanna CarterJoanna Carter Membre, Modérateur
    avril 2015 modifié #19

    Mais le UINavigationController n'est pas nécessaire ; regardes ma solution.


Connectez-vous ou Inscrivez-vous pour répondre.