2017-09-28 5 views
0

J'utilise SwiftyPickerPopover pour afficher le contrôle contextuel afin que l'utilisateur puisse sélectionner une valeur. Auparavant, à un autre endroit dans l'application que je l'ai mis en œuvre comme:Remplir les choix SwiftyPickerPopover avec le tableau

let displayStringFor:((String?)->String?)? = { string in 
      if let s = string { 
       switch(s){ 
       case "Lhe”: 
        return "Lh” 
       case "Khi": 
        return "Khi” 
       case "Isb”: 
        return "Isb" 
       case "Guj": 
        return "Guj" 
       default: 
        return s 
       } 
      } 
      return nil 
     } 

     let p = StringPickerPopover(title: "Select City", choices: ["Lhe”,”Khi”,”Isb”,”Guj”]) 
      .setDisplayStringFor(displayStringFor) 
      .setDoneButton(
       action: { popover, selectedRow, selectedString in 

        self.cityButton.setTitle(selectedString,for: .normal) 
        if selectedRow == 0 { 
         self.cityImage.image = UIImage(named: "Lhe") 
        } else if selectedRow == 1 { 
         self.cityImage.image = UIImage(named: "Khi") 
        } else if selectedRow == 2 { 
         self.cityImage.image = UIImage(named: "Isb") 
        } else if selectedRow == 3 { 
         self.cityImage.image = UIImage(named: "Guj") 
        } 
      }) 
      .setCancelButton(action: {_, _, _ in 
      }) 
     p.appear(originView: sender as! UIView, baseViewController: self) 

que vous pouvez voir les valeurs sont ici codées en dur. Maintenant, j'ai une API qui me donne toutes les villes. J'ai donc créé var mainCitiesArray = [City]() et appelé l'API et analysé les données.

Dans mainCitiesArray J'ai maintenant toutes les villes que je veux afficher dans cette popup. Comment puis je faire ça?

Répondre

0

Avez-vous juste besoin d'analyser les noms de villes en tableau de chaînes?

E.G.

let citiesNamesArray = mainCitiesArray.map({ 
    (city: City) -> String in 
    return city.name 
}) 

Et vous pouvez passer citiesNamesArray au paramètre choises.