gpt4 book ai didi

swift - 将数据从模型传递到 collectionViewCell

转载 作者:行者123 更新时间:2023-11-28 13:50:19 24 4
gpt4 key购买 nike

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

 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 Altahini post 更新我的代码

谢谢,我尝试实现第二种方法。

我使用 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
}

或者您可以在开始时引用您的单元格,然后在其他任何地方进行设置。只需将 var imageModelCell: imageModelCollectionViewCell 之类的变量添加到 UICollectionViewDataSource 并将单元格传递到 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

关于swift - 将数据从模型传递到 collectionViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54729342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com