Partage
  • Partager sur Facebook
  • Partager sur Twitter

tabBar et TableView

xCode iPad

    6 décembre 2012 à 14:45:32

    Bonjour à tous,

    Je débute tout juste en Objective-C et je galère un peu à faire ma propre application. J'aimerais avoir un rendu quasi similaire à l'iamge que je joins (désolé pour ceux qui reconnaîtrons l'appli j'ai fait au mieux pour camoufler)
    Image utilisateur

    Ma question est dois-je partir sur un projet de type tabBar et ensuite ajouter des tablesViewCells dans les tabBar que je veux ?
    Du moins c'est ce que j'essaye de faire mais je n'arrive pas à configurer ces cells après pour leur dire que ça me permettra d'accéder à tel menu etc..

    Clairement je ne souhaite pas avoir un projet MasterView car j'aimerais avoir une petite image de fond simple comme sur l'écran ci dessus et avoir un truc assez épuré.

    J'espère m'être fait comprendre.

    Merci pour votre aide.

    Cordialement,
    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2012 à 18:35:40

      Je te conseille de partir d'un projet tabBar.

      Ensuite tu dois faire plusieurs sections et pour chaque section, plusieurs type de cellules. Je te conseille de stocker ca dan un plist.
      Pour pouvoir afficher plusieurs cellules par ligne tu peux créer une custom classe UITableViewCell et surcharger la méthode drawRect.
      • Partager sur Facebook
      • Partager sur Twitter
        10 décembre 2012 à 9:09:55

        Merci pour ta réponse. Quand tu parles de "sections" tu te réfère à des "TableView" ? Concernant le plist, je ne suis pas familier avec ce fonctionnement, je vais faire des recherches sur Internet pour comprendre. Si j'ai d'autres questions je posterais ici !
        Merci encore pour ton aide !

        EDIT: J'ai essayé de comprendre le principe des "plist" mais ce n'est pas évident de comprendre l'utilité dans mon cas. Pourrais-tu m'éclairer un peu la dessus ?

        Pour résumer, j'ai créer un projet tabBar, j'ai glisser dessus une "TableView" (à l'aide de l'Interface Builder). Je rajoute une cellule dans le TableView et c'est à ce moment que je bloque (je rappelle que je suis très novice) un peu puisque je n'arrive pas à correctement configurer les cellules. C'est bien sur d'un point de vue code que je bloque.

        Merci bien !
        • Partager sur Facebook
        • Partager sur Twitter
          10 décembre 2012 à 19:31:02

          Un plist c'est comme un fichier xml à la sauce Apple.
          Pour les custom cellules va voir sur http://www.raywenderlich.com/ ou http://mobile.tutsplus.com/ si tu bloques sur certains points, les tutos sont trés bien foutus
          • Partager sur Facebook
          • Partager sur Twitter
            11 décembre 2012 à 7:58:30

            Super ! Je vais regarder tous les tutos de A à Z et ça devrait le faire.
            Merci beaucoup !

            EDIT: J'ai trouvé mon bonheur sur les sites que tu m'as donné surtout tutsplus ! Merci encore
            • Partager sur Facebook
            • Partager sur Twitter
              12 décembre 2012 à 17:04:05

              J'ai une petite question qui est liée au sujet. J'ai réussi à créer un projet tabBar avec une TableView dedans donc pas de soucis pour ça.

              Le soucis maintenant c'est que je voudrais lorsque qu'on appuie sur une cellule entrer dans un DetailViewController lui même étant un TableView. Il y aurait donc plusieurs niveaux de détails.

              Si quelqu'un pouvait m'indiquer rapidement la marche à suivre à savoir surtout quel type de controller je dois implémenter en plus pour arriver à ce résultat.

              Merci d'avance.
              Cordialement,
              • Partager sur Facebook
              • Partager sur Twitter
                12 décembre 2012 à 18:10:56

                Ajoute à ta tableVC un navigationController dans ton storyboard. Ensuite tu peux appeler ta detailsVC via sef.navigationcontroler pushViewController:.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 décembre 2012 à 10:59:27

                  Citation : Horiel

                  Ajoute à ta tableVC un navigationController dans ton storyboard. Ensuite tu peux appeler ta detailsVC via sef.navigationcontroler pushViewController:.



                  C'est ce que j'essaye de faire et j'ai trouvé un tuto bien complet (à ce lien) pour ceux que ça intéresse.

                  Le problème c'est qu'il utilise le MainWindow.xib et moi je ne l'ai pas dans mon projet (xCode 4.5.2) et du coup il y a pas mal d'éléments qui diffèrent.

                  Ce que j'ai donc voulu faire :
                  - Transformer mon FirstViewController en UINavigationController en changeant sa classe.
                  - Créer un ViewController que j'associe au NavigationController tout juste créé. L'association entre les deux est impossible à part un "push" mais je pense qu'il faudrait les relier avec un "Relationship Segue" non ? Mais cela est impossible....
                  - Ensuite utiliser self.navigationController et le reste est relativement simple.

                  Mais du coup quand je lance la simulation j'ai un écran noir qui apparait :/...

                  Tu aurais une idée ?

                  Merci encore pour ton aide !

                  EDIT: A croire que tu m'inspire beaucoup :).
                  En analysant mieux ta réponse, j'ai créé un NavigationController dans mon StoryBoard, je l'ai relié (Relationship viewController) à mon tabBar et j'ai relié le NavigationController(Relationship viewController) avec mon FirstViewController. J'ai testé, j'ai fait un pushViewController et ca marche nikel.

                  Merci !


                  EDIT 2: Maintenant j'arrive à accéder à ma TableView mais je n'ai qu'un écran noir. J'ai la configuration suivante:
                  Image utilisateur

                  Sur le 2e niveau j'ai un écran noir avec une "NavigationBar" et la "TabBar". Voila ce que j'ai mis dans le FirstViewController.m (correspondant au 1er niveau):


                  //Gère les évènements concernant un appui sur la cellule
                  -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
                  {  
                      DetailPViewController *dvpController = [[DetailPViewController alloc] init];
                      dvpController.tvProducts = tableView;
                      
                      [self.navigationController pushViewController:dvpController animated:YES];
                      dvpController = nil;
                      
                  }
                  
                  #pragma -
                  #pragma DetailView Management
                  
                  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
                  {
                      if([[segue identifier] isEqualToString:@"detail1Segue"])
                      {
                          NSInteger selectedIndex = [[self.tablePremierOnglet indexPathForSelectedRow] row];
                          DetailPViewController *dv1Controller = [segue destinationViewController];
                          dv1Controller.selectedMenu = [NSString stringWithFormat:@"%@", [genArray objectAtIndex:selectedIndex]];
                      }
                  }
                  



                  Je ne sais pas si j'ai été clair mais si je l'ai été merci à tous ceux qui pourront m'aider. Et quand je coupe la simulation, l'écran n'est plus noir mais affiche bien la TableView :/.
                  Merci !

                  EDIT 4: Je suis désolé de "spammer" ce post mais je met à jour au fur et à mesure. Les questions que je pose sont un peu bêtes mais étant vraiment débutant, si d'autres sont dans mon cas ça pourra peut être les aider.

                  J'ai donc trouvé la solution pour l'écran noir qui s'affiche. Il faut remplacer cette ligne:

                  DetailPViewController *dvpController = [[DetailPViewController alloc] init];
                  


                  Par:
                  DetailPViewController *dvpController = [self.storyboard instantiateViewControllerWithIdentifier:@"level2Window"];
                  


                  Il ne faut donc pas initialiser ou allouer de la mémoire pour un ViewController par le storyboard et il faut donc passer par la méthode instantiateViewControllerWithIdentifier.

                  Je ne sais par contre toujours pas faire que si l'on appuie sur une cellule ça ouvre cette DetailView qui affiche elle aussi des cellules appuyable.
                  J'ai donc toujours besoin d'aide :)))


                  Dylan
                  • Partager sur Facebook
                  • Partager sur Twitter

                  tabBar et TableView

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown