CollectionView没有显示任何项目

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

我不知道我做错了什么。

我有一个viewController和一个collectionView。

我已经在viewController和storyboard中设置了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仍然是空的。

我到底漏了什么?

ios swift uicollectionview
1个回答
2
投票

将此添加到你的 viewDidLoad :

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

并重新加载你的 collectionViewyourCollectionView.reloadData() 在你将元素从 JSON.

希望能帮到你...

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