CollectionView没有显示任何项目

时间:2020-04-28 18:28:14

标签: ios swift uicollectionview

我不知道我在做什么错。

我有一个带有collectionView的viewController。

我在viewController和情节提要中设置了collectionView委托,如下所示:

modelosCV.delegate = self
modelosCV.dataSource = self

我已经创建了所有collectionView方法:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return filtrados ? modelosFiltrados.count : modelos.count
    }

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {



    let cellModelos = collectionView.dequeueReusableCell(withReuseIdentifier: "modelo", for: indexPath) as! ModelosCollectionViewCell



    print(filtrados ? modelosFiltrados[indexPath.row].icono : modelos[indexPath.row].icono)

    let foto_modelo = filtrados ? modelosFiltrados[indexPath.row].icono : modelos[indexPath.row].icono

    let modelo_nombre = filtrados ? modelosFiltrados[indexPath.row].nombre : modelos[indexPath.row].nombre
    cellModelos.modelo_nombre.text = modelo_nombre

    let url = URL(string: "https://j../iconos/"+foto_modelo)

    UIImage.loadFrom(url: url!) { image in
        cellModelos.modelo_icono.image = image

    }


    return cellModelos


}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {


       let padding: CGFloat =  50
        let collectionViewSize = collectionView.frame.size.width - padding

        return CGSize(width: collectionViewSize/2, height: 242)
    }

我正在从远程JSON源填充collectionView:

func downloadJSONModelos(completed: @escaping () -> ()) {

    var categoria = ""



    let cat = self.defaults.string(forKey: "nueva_alarma_categoria")
    if (cat == "Móviles"){
        categoria = "3"
    }
    if (cat == "Tablets"){
        categoria = "5"
    }
    if (cat == "Smartwatches"){
        categoria = "7"
    }
    let marca_id = self.defaults.string(forKey: "nueva_alarma_marca_id")
    let url = URL(string: "https:.....php?marca="+marca_id!+"&cat="+categoria)


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

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

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


                DispatchQueue.main.async {
                    completed()
                }

            }catch{

            }
            print(self.modelos)
        }
    }.resume()


}

应用程序正在接收输出中打印的JSON数组,但collectionView仍然为空。

我想念什么?

1 个答案:

答案 0 :(得分:2)

将此添加到您的viewDidLoad中:

yourCollectionView.register(UINib(nibName: "yourXibName", bundle: nil), forCellWithReuseIdentifier: "modelo")

在从collectionView向数组中添加元素的位置,用yourCollectionView.reloadData()重新加载JSON

希望有帮助...

相关问题