[Débutant] Design navigation de l'appli, conseils pour construire une UI, patterns iOS

colas_colas_ Membre
mai 2014 modifié dans API UIKit #1

Bonjour à  tous !


 


Après plusieurs mois à  faire du OSX, je me lance aujourd'hui dans le iOS !!


Je n'y connais rien et tous vos conseils seront les bienvenus.


 


Pour commencer, je voudrais réfléchir à  une interface de navigation.


J'ai fait un beau dessin pour vous décrire l'interface que j'ai en tête.


Réponses

  • PyrohPyroh Membre
    Je ne pourrai pas t'aider sur un plan technique.

    Ni sur un plan ergonomique parce qu'on ne sait pas à  quoi va servir ton application c'est dur de donner un avis.

    Dis nous en plus ;)
  • samirsamir Membre
    mai 2014 modifié #3

    Bonjour,


     


    Les custom container est la solution à  mon avis, en tout cas ça va te faciliter la tache.


     


    Un controller (root/parent) qui vas contenir deux controlleurs, un responsable de la vue de gauche et l'autre de la vue du milieux.


     


    Pour la communication, je créerai un delegate et data source pour la vue de gauche. ( comme la UITableView). L'objet data source vas lui dire qui afficher ( quels buttons,....) et l'objet delegate va etre informer sur le click des buttons....


     


    https://developer.apple.com/library/ios/featuredarticles/viewcontrollerpgforiphoneos/ViewControllerPGforiOS.pdf


  • colas_colas_ Membre

    @Pyroh En fait, je cherche plus de l'aide technique !!!


     


    Sinon, au niveau métier, imagine que la main-view présente des recettes, des listes d'ingrédient, des listes de magasin, etc. Les boutons permettent de naviguer entre ces différentes views.


  • colas_colas_ Membre



     


    il pourrait récupérer le tag des boutons par exemple, pour ensuite faire telle ou telle action ?


     


    C'est plus simple que d'imaginer que chaque bouton ait son delegate, j'ai l'impression ! Merci de tes conseils !

  • samirsamir Membre


    C'est plus simple que d'imaginer que chaque bouton ait son delegate, j'ai l'impression ! Merci de tes conseils !




    Non pas sur chaque button, c'est le UIViewController qui gère la vue de gauche qui va avoir un delegate.


     


    par exemple ta vue de gauche contient un button recherche : rechercher.



    - (IBAction)searchButtonClicked:(id)sender {
    if (self.delegate responds...){
    // la tu informe ton delegate que le button recherche est clické avec les paramètres adéquats...
    }
    }

    et tu fais pareil pour les autres buttons.

  • colas_colas_ Membre

    @samir : oui mais je ne peux pas connecter dans IB le button avec la méthode, puisque le button apparaà®t dans une UIScrollView.


     


    Du coup, dois-je faire autrement ou dois-je connecter dans le code ?


  • Bonjour, d'un point de vu utilisateur ne penses tu pas que ton interface est perturbante, le fait d'appuyer sur un bouton va avoir deux actions, changer le contenu de la même vue et changer les boutons et donc accessoirement le bouton sur lequel on vient d'appuyer.


    Perso je rajouterais une rangé de boutons ou d'onglet pour passer d'une interface à  l'autre...


  • colas_colas_ Membre

    @denis_13 ;


     


    Ton point de vue se tient, mais j'avoue avoir bien envie de faire des tests !!!


     


    Sinon, penses-tu que je me lance les yeux fermés dans storyboard et segue ?


  • oui pour les segues sans problème, mais si j'ai bien compris tes objectif, je mettrai les boutons dans une tableview non statique et je me ferai à  la main une swap view pour la vue principale


     


     


     




    @denis_13 ;


     


    Ton point de vue se tient, mais j'avoue avoir bien envie de faire des tests !!!


     


     


    Sinon, penses-tu que je me lance les yeux fermés dans storyboard et segue ?



  • en guise de swap view tu peux bien sur utiliser une scrollview et tu changes dynamiquement la content view, tout en ayant une instance sur le viewcontroller que tu vas généré et que tu n'oubliera pas de déclaré en tant que child view controller (pas besoin d'aller à  la mairie :-) )

  • denis_13denis_13 Membre
    mai 2014 modifié #12

    tu peux être tenté d'utiliser un conteneur view dans storyboard, mais pour ma part je n'ai pas trouvé de méthode pratique pour changer une vue par une autre, c'est probablement plus simple de faire la manipe à  la main moi je fais en général comme ceci:


     


     


    - (void)installNewController:(UIViewController *)newController


    {


        // some cleaning


        [[self swapViewController] removeFromParentViewController];


        [[[self swapViewController] view] removeFromSuperview];


        


        if (!newController) {


            return;


        }


        


        // Add controller as a child to root


        [self addChildViewController:newController];


        [newController didMoveToParentViewController:self];


        // Save it for future use


        self.swapViewController = newController;


        


        // Add View


        self.swapViewController.view.frame = self.swapView.bounds;


        [[self swapView] addSubview:</span><span style="color:#bb2ca2;">self</span><span style="color:#000000;"> </span>swapViewController<span style="color:#000000;">] </span><span style="color:#3d1d81;">view</span><span style="color:#000000;">;


    }


  • comme tu l'as deviné, newController est une variable d'instance de ton contrôleur principal (celui qui gère ta scroll view), et tu ajoutes à  ce même contrôleur principale des actions qui vont utiliser cette méthode pour changer la vue principale par exemple à  partir de ton storyboard avec "instantiateViewControllerWithIdentifier:"

  • colas_colas_ Membre
    mai 2014 modifié #14

    Dans ce cas précis, j'ai l'impression qu'il n'y a pas besoin de storyboard.


    Est-ce possible d'utiliser les segues sans les stroyboards ?


    En fait, ce qui m'intéresse par rapport aux segues c'est 


    - quand on clique sur un bouton et qu'une nouvelle vue arrive, je voudrais avoir des transitions


    - j'aimerais avoir un historique (un bouton back)


     


    Merci !


  • je crois que les segues sont liés à  storyboard, dans ton cas rien ne t'oblige non plus à  avoir des segues, ni pour les transitions ni pour le back, mais passer par storyboard, c'est plutôt pratique (et si tu exportes ton storyboard il te génère une collection de nibs, dans l'autre sens ca n'existe pas)

  • samirsamir Membre


    Dans ce cas précis, j'ai l'impression qu'il n'y a pas besoin de storyboard.


    Est-ce possible d'utiliser les segues sans les stroyboards ?


    En fait, ce qui m'intéresse par rapport aux segues c'est 


    - quand on clique sur un bouton et qu'une nouvelle vue arrive, je voudrais avoir des transitions


    - j'aimerais avoir un historique (un bouton back)


     


    Merci !




     


    J'ai l'impression que tu mélangé un peu les choses :)


    Le storyboard et les sègues n'ont rien avoir avec les animations.


     


    Ce que tu veux faire est tout simplement un "container view controller" avec des "UIView controller transition".


    Pour les container, lis le document guide que j'ai posté précédemment.


     


    et pour les transition voici un lien WWDC et un tuto : 


    http://asciiwwdc.com/2013/sessions/218


    http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/


     


    Le stroyboard est pour les vues, donc soit tu utilises un xib soit un stroyboard. Personnellement j'utilise les xibs.

  • @samir oui tu as raison, je mélange un peu tout. :'(  Merci de ton aide et de tes explications. Le tuto que tu m'indiques me semble un peu compliqué. Pour l'instant, je fais celui-là  (Ray Wenderlich)


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