如何将结构值加载到集合视图单元格中。
struct Person: Codable {
let id,name,age,gender: String
}
为人员列表添加价值
func addValues () -> [Person]{
person =[(Person(id:"0",name:"abcd",age:"27":gender:"male"))]
}
内侧收藏视图控制器
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CustomCollectionViewCell
cell.personImg!.image = UIImage.init(named:personList.imageImage[indexPath.row])
switch indexPath.row {
case 0:
cell.lbl_CompletionName!.text = person[0].id
break
case 1:
cell.lbl_CompletionName!.text = person[0].name
break
case 2:
cell.lbl_CompletionName!.text = person[0].age
break
case 3:
cell.lbl_CompletionName!.text = person[0].gender
break
default: break
}
return cell
}
它只获取 id 值,一旦索引路径.row 递增,它如何需要分配下一个值,如姓名、年龄、性别。
上面的代码用于提取存储在数组列表中的结构体值。
我不喜欢我编写代码的方式。有没有另一种方法来提取添加到数组列表属性中的结构值并将其加载到集合视图中?
您可以在CustomCollectionViewCell
中创建一个Person
变量,并在func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
中设置cell.person
变量。您还需要有一个数组(在下面的例子中我称之为people
(,该数组存储所有Person
对象,无论您在哪里显示集合视图(很可能是视图控制器(。
例:
人
struct Person: Codable {
let id,name,age,gender: String
}
集合视图单元格
class CustomCollectionViewCell: UICollectionViewCell {
// Create a Person variable
var person: Person? {
didSet {
guard let person = person else { return }
// Do something (e.x. set imageView.image = person.image)
}
}
}
集合视图
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let person = people[indexPath.item] // This is the array of Persons you need in your view controller
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CustomCollectionViewCell
cell.person = person
return cell
}