IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Swift Discussion :

PickerView/ComboBox -> déboitât en Swift


Sujet :

Swift

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 12
    Points : 15
    Points
    15
    Par défaut PickerView/ComboBox -> déboitât en Swift
    Bonjour,

    Débutant sous Switch, je souhaite créer une application à destination de mon iPad Pro 11". J'ai télécharger la dernière version de Xcode il y a 2 semaines.

    Je connais d'autres langages (PHP, C/C++, Java...) et les BdD.

    Là, j'essaye de créer sur un écran, plusieurs combobox. J'ai compris (ou je pense avoir compris) qu'il fallait utiliser le composant PickerView.

    Seulement, je n'arrive pas à trouver comment on peut utiliser plusieurs fois ce composant à différents emplacements de mon écran.

    Par exemple, à un endroit j'aimerais avoir une liste déroulante pour choisir un "Assistant", plus loin une deuxième liste déroulante pour choisir un "lieu" et une troisième liste pour choisir les "conditions météorologiques".

    Hors avec PickerView, on ne peut avoir une liste ou alors avoir des listes regroupées ensembles... Question IHM, ce n'est pas top.

    D'ou ma question et mes recherches sur Internet (qui sont pour l'instant resté infructueuses) : est-ce que j'utilise le bon composant ?

    Si oui, comment faire ?

    Si non, existe t-il des composants que l'on peut trouver sur Internet pour réaliser l'objectif que je me suis fixé et qui permettrait d'enrichir la bibliothèque de Xcode ?

    Je vous remercie pour vos rponése. Je vous souhaite un bon dimanche.

    Eric

  2. #2
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Réponse
    Bonjour Eric,

    En effet, tu as 2 possibilités :

    1. Utiliser les composants par défaut de Swift et dans ce cas, tu dois bien utiliser UIPickerView
      Ci-dessous, un exemple de code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    import UIKit
     
    class ViewController: UIViewController {
     
        let picker1: UIPickerView = {
            let p = UIPickerView()
            p.translatesAutoresizingMaskIntoConstraints = false
            p.backgroundColor = .lightGray
            return p
        }()
     
        let picker2: UIPickerView = {
            let p = UIPickerView()
            p.translatesAutoresizingMaskIntoConstraints = false
            p.backgroundColor = .lightGray
            return p
        }()
     
        let picker3: UIPickerView = {
            let p = UIPickerView()
            p.translatesAutoresizingMaskIntoConstraints = false
            p.backgroundColor = .lightGray
            return p
        }()
     
        let dataPicker1Array = ["Assitant1", "Assitant2", "Assistant3"]
        let dataPicker2Array = ["Bruxelles", "Charleroi", "Mons", "Tournai"]
        let dataPicker3Array = ["Ensoleillé", "Nuageux", "Brouillard"]
     
        override func viewDidLoad() {
            super.viewDidLoad()
     
            self.view.backgroundColor = .white
            self.title = "Développez.com"
     
            picker1.delegate = self
            picker1.dataSource = self
            self.view.addSubview(picker1)
     
            picker2.delegate = self
            picker2.dataSource = self
            self.view.addSubview(picker2)
     
            picker3.delegate = self
            picker3.dataSource = self
            self.view.addSubview(picker3)
     
            setupView(UIScreen.main.bounds.size)
        }
     
        func setupView(_ size: CGSize) {
            picker1.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
            picker1.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
            picker1.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true
     
            picker2.topAnchor.constraint(equalTo: picker1.bottomAnchor, constant: 20).isActive = true
            picker2.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
            picker2.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true
     
            picker3.topAnchor.constraint(equalTo: picker2.bottomAnchor, constant: 20).isActive = true
            picker3.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
            picker3.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true
        }
     
    }
     
    extension ViewController: UIPickerViewDelegate, UIPickerViewDataSource {
     
        func numberOfComponents(in pickerView: UIPickerView) -> Int {
            return 1
        }
     
        func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
            var nbRec: Int = 0
            if (pickerView == picker1) {
                nbRec = dataPicker1Array.count
            } else if (pickerView == picker2) {
                nbRec = dataPicker2Array.count
            } else if (pickerView == picker3) {
                nbRec = dataPicker3Array.count
            }
            return nbRec
        }
     
        func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
            var rowValue: String?
            if pickerView == picker1 {
                rowValue = dataPicker1Array[row]
            }else if pickerView == picker2 {
                rowValue = dataPicker2Array[row]
            }else if pickerView == picker3 {
                rowValue = dataPicker3Array[row]
            }
           return rowValue
        }
     
    }
    Résultat :

    Nom : IMG_1385.jpeg
Affichages : 123
Taille : 24,5 Ko

    1. Deuxième possibilité, utiliser des librairies externes (pod) avec la possibilité de trouver un layout qui ressemblera plus à une combobox.
      Je te conseille de jeter un oeil sur le site https://cocoapods.org



    Bien à toi

    Benjamin

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par benjisan Voir le message
    Bonjour Eric,

    En effet, tu as 2 possibilités :

    1. Utiliser les composants par défaut de Swift et dans ce cas, tu dois bien utiliser UIPickerView
      Ci-dessous, un exemple de code


    ...
    Bien à toi

    Benjamin
    Bonjour,

    Désolé de vos répondre que maintenant. Mais je ne consulte votre réponse que maintenant. Ce que je ne comprends pas, c'est que je m'étais abonné pour recevoir des notifications. Mais cela n'a pas marché.

    Merci pour cet exemple et piste.

    Je vais les étudier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. Réponses: 1
    Dernier message: 11/08/2017, 17h29
  3. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  4. combobox et readonly
    Par Mac leod dans le forum C++Builder
    Réponses: 6
    Dernier message: 28/11/2002, 10h27
  5. combobox->text
    Par clovis dans le forum C++Builder
    Réponses: 18
    Dernier message: 21/06/2002, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo