使用远程JSON数组填充UIPIckerView

问题描述 投票:0回答:1

我正在从远程服务器下载JSON数组:

var colores = [Colores]()


func downloadJSONColores(completed: @escaping () -> ()) {
         let url = URL(string: "https://../colores.php")


         URLSession.shared.dataTask(with: url!) { (data,response,error) in

            print(data as Any)
            print(response as Any)

         if error == nil {
             do {
                 self.colores = try JSONDecoder().decode([Colores].self, from: data!)

                 DispatchQueue.main.async {
                     completed()
                 }

             }catch{

             }

         }
         }.resume()


     }

我有一个Colores的结构类:

struct Colores:Decodable {

    let id: Int
    let nombre: String
    let icono: String
    let modelo: Int
    let caracterista: Int

}

我需要用解码的JSON对象填充PickerView,将字段nombre显示为标题,并存储来自pickerview所选项目的字段id。

我在viewDidLoad中按如下方式调用downloadJSONColores方法:

downloadJSONColores {
            coloresPV.reloadData()
                     }

其中coloresPV是我的pickerView,但显然,这种方式仅适用于collectionViews,而不适用于pickerViews。在执行downloadJSONColores时,哪种方法是填充pickerView的最佳方法?

ios swift uipickerview
1个回答
0
投票

看看UIPickerViewDataSourceUIPickerViewDelegate协议。

如果我正确理解了您的问题,则需要在ViewController中保留变量colors: [Colores]

然后:

  • 在执行colors.countfunc numberOfComponents(in: UIPickerView) -> Int功能时返回UIPickerViewDataSource

  • pickerView(UIPickerView, titleForRow: Int, forComponent: Int) -> String?函数的UIPickerViewDelegate函数的实现中返回正确的标题。

© www.soinside.com 2019 - 2024. All rights reserved.