imageModelCollectionViewCell

imageModelCollectionViewCell

我有几个自定义单元格通过此方法应用

 switch indexPath.row {
        case 1:
            cell = collectionView.dequeueReusableCell(withReuseIdentifier: "randomCell", for: indexPath)
                as? randomCollectionViewCell


        case 2:
            cell = collectionView.dequeueReusableCell(withReuseIdentifier: "timeCell", for: indexPath)
                as? timeCollectionViewCell

        case 3:
            cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ownerCell", for: indexPath)
                as? ownerCollectionViewCell

default:
            cell = collectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath)
                as? imageModelCollectionViewCell

        }
        return cell
    }

所有单元格同时按顺序显示。默认函数中的最后一个单元格是imageView,我需要从模型传递该值。
模型将图像创建为链接,因此您还需要上载图片。
例如这段代码
cell.Image Model.image = ...

抛出错误
Value of type 'UICollectionViewCell?'has no member 'modelimage'

这是collectionViewCell中的代码,用于传递数据
import UIKit

class imageModelCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var modelImage: UIImageView!

}

如何将数据从模型传输到单元?
//更新
我正在通过Saleh Altahinipost更新我的代码
谢谢,我试着实现第二种方法。
我使用var imageModelCell: imageModelCollectionViewCell?
使用方法
DispatchQueue.main.async {
                                            self.collectionView.reloadData()

imageModelCell!.modelImage = UIImage(data: data) as imageModelCollectionViewCell }

犯了个错误
Cannot convert value of type 'UIImage?' to type 'imageModelCollectionViewCell' in coercion

最佳答案

你得到的错误意味着你的手机没有被降级到imageModelCollectionViewCell。也许你没有正确地引用单元格?
不管怎样,你可以用两种方法设置单元格。
第一种方法是在cellForItemAt函数中设置单元格,如下所示:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath) as! imageModelCollectionViewCell
    cell.modelImage.image = //Your Image
    return cell
}

或者你可以在开始时引用你的单元格,然后在以后的任何地方设置它。只需向UICollectionViewDataSource添加一个类似于var imageModelCell: imageModelCollectionViewCell的变量,然后在cellForItemAt中传递单元格,如下所示:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath) as! imageModelCollectionViewCell
    self.imageModelCell = cell
    return cell
}

然后,您可以从任何其他函数或回调函数中使用imageModelCell.modelImage = //Your Image
附带说明:一个好的做法是用大写字母开始类的名称,用小写字母开始变量,这样就可以更好地用Xcode区分调用或引用的内容。也许可以考虑将类的名称更改为ImageModelCollectionViewCell。

09-25 18:44