我有几个通过此方法应用的自定义单元格
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
发布
谢谢,我尝试实现第二种方法。
我使用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
答案 0 :(得分:1)
您收到的错误意味着您的单元格没有向下转换为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
}
或者您可以从一开始就引用您的单元格,以后再从其他任何地方进行设置。只需将<{1}}之类的变量添加到 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
}
旁注:好的做法是,以大写字母开头的类名和以小写字母开头的变量,这样,您可以更好地区分使用Xcode调用或引用的内容。也许考虑将您的类的名称更改为 ImageModelCollectionViewCell 。