我有几个自定义单元格通过此方法应用
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
}
或者你可以在开始时引用你的单元格,然后在以后的任何地方设置它。只需向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。