我正在以编程方式创建UICollectionViewCells。该单元格具有一个“内容视图”(我仅像装饰性框架一样使用它)。在该视图中,我创建UILabel,UIImageView和另一个UILabel。初始化单元后,所有设置均已完成。所有作品都很完美
在ViewController上,我想在方法中到达该UI组件: CellForItemAt 最好的方法是什么?现在我正在使用viewTags来达到特定的组件,但是也许有更好的方法吗?
我需要将其填充以填充CoreData中的数据
BR iMat
答案 0 :(得分:0)
假设您有自定义的UICollectionViewCell
子类
class MyCell: UICollectionViewCell {
var item: Item?
...
func setUI() {
label.text = item.someProperty
...
}
...
}
出队时,您可以将单元格转换为子类
cell as! MyCell
...然后您可以访问子类的方法,变量等。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "identifier", for: indexPath) as! MyCell
cell.item = array[indexPath.row]
cell.setUI()
...
return cell
}
答案 1 :(得分:0)
以编程方式创建UICollectionViewCell's
UI时,可以在UICollectionViewCell
中将这些UI元素作为公共变量。
并创建一个公共方法,将数据设置到CustomCell
的UI元素中,如下所示。
class CustomCell:UICollectionViewCell{
var imageView:UIImageView!
var label1:UILabel!
var label2:UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
//Initialize your imageView,label1 and label2
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func set(_ text1:String?, text2:String?, image:UIImage?){
imageView.image = image
label1.text = text1
label2.text = text2
}
}
在cellForItemAt
函数中,将数据传递到自定义单元格,如下所示。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "YourCustomCellID", for: indexPath) as! CustomCell
cell.set("1", text2: "2", image: yourImage)
return cell
}