Affichages en fonction d'un Pickerview

Bonjour

J’ai un picker view avec différentes lignes (1,2,3,4), en cliquant sur une ligne je vais sur une vue où il y a une image et un bouton. le bouton doit me diriger vers une table. pour évité de démultiplié les écrans, je voudrais avoir une seule vue et une seule tableview. je ne sais pas comment gérer l’enchainement en fonction de la sélection dans le picker. par exemple quand je clique sur 1 il doit m’afficher la vue avec une image spécifique et un accès à partir du bouton vers la table view avec ses données. quand je clique sur 2 c’est une nouvelle image et à partir du bouton je vais sur la tableview avec des nouvelles données. Est ce quelqu’un aurait une idée ou un exemple pour gérer ce cas. par avance merci de votre aide.

Bonjour Fab,

Pour dégrossir ta question, si je comprends bien, ça te fait 3 vues :

  • 1 avec le pickerView,
  • 1 avec une imageView et un bouton
  • 1 avec un tableView

Evidemment, tu ne vas pas t’amuser à démultiplier ce trio pour chaque valeur de ton pickerView.
Il te faudra donc passer des valeurs d’un controller de vue vers le controller de la vue suivante, charge ensuite aux controllers de savoir ce qu’ils doivent afficher en fonction des valeurs reçues.

Le passage de valeur d’un viewController1 vers un viewController2 se fait le plus souvent au sein de la fonction prepareForSegue :

   override func prepare(for segue: UIStoryboardSegue, sender: Any?)  {
        if segue.identifier == "seguePourPasserDeVC1VersVC2" {
         
            //Créer une référence à vc2
            if let vc2 =  segue.destinationViewController as? VC2 {

                // Passer une valeur de vc1 (self) vers vc2.
                vc2.valeurAPasser = self.valeurAPasser

                // Créer une référence à vc1 (previousVC) au sein de vc2 -> utile pour retourner ensuite des valeurs de vc2 vers vc1
                vc2.previousVC= self
           }
        }
    }

Petite remarque cependant, l’utilisation d’un pickerView pour sélectionner une valeur et déclencher le passage à une nouvelle vue ne me parait pas être le plus judicieux.
Un tableView serait peut-être plus adapté pour gérer ça ?

Bon courage !

Bonjour Loloabj

Merci de ton retour, je sais pas si j’ai bien compris, mais je ne fais pas passer de valeur entre les vues. A moins que la valeur que tu indiques soit une référence qui permettrait de faire apparaitre certaines valeurs dans le VC2. Je dois avoué être un peu largué.

Pour être plus clair , Imaginons que dans le picker j’ai France, Angleterre, Suisse.

Si je sélectionne suisse, j’arrive sur mon vc2 qui affiche la carte de la suisse . sur cette carte se trouve un bouton si je clique dessus je dois aller au VC3 qui est une table avec la liste de toutes les villes.

Idem pour les autres pays.

Merci.

Bien oui l’idée c’est que si tu sélectionne Suisse dans VC1, tu envoies la valeur currentPays = “Suisse” dans VC2.
Du coup, à son chargement, VC2 sait ce qu’il doit faire à son chargement (ViewDidLoad) : mapImageView.image = “Suisse_image”

Idem quand tu clique sur le bouton, , tu envoies la valeur currentPays = “Suisse” dans VC3…

Enfin dans l’esprit quoi… Il y a des tutoriels très bien fait pour faire ça, à commencer par la formation de Maxime.

Merci

je vais essayé de trouver le tutoriel qui parle de ça.

Encore merci

Bonne soirée