2017-09-28 38 views
0

我使用SwiftyPickerPopover來顯示彈出控件,以便用戶選擇一個值。以前在應用程序的另一個地方,我已經實現它:使用數組填充SwiftyPickerPopover選項

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) 

你可以看到這裏的硬編碼值。現在我有了一個API,可以讓我看到所有的城市。所以我製作了var mainCitiesArray = [City]()並調用了API和解析的數據。

mainCitiesArray我現在已將所有城市顯示在此彈出窗口中。我怎樣才能做到這一點?

回答

0

您是否需要將城市名稱解析爲字符串數組?

E.G.

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

而且您可以將citiesNamesArray傳遞給choises參數。