使用两种不同类型的单元格时如何确定集合视图的大小
Posted
技术标签:
【中文标题】使用两种不同类型的单元格时如何确定集合视图的大小【英文标题】:How to determine size of collection view when using two different type of cell 【发布时间】:2020-01-22 17:08:52 【问题描述】:当我使用两种不同类型的单元格时如何确定大小集合视图,其中一个单元格的大小始终为一个,而另一个单元格的大小取决于数组,因此它的大小是动态的。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
if indexPath.row == 0
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProfileCell", for: indexPath) as! ProfileCollectionViewCell
cell.bioLabelText.text = bio
return cell
else
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CountryCollectionViewCell
cell.countryLabel.text = city
cell.imgView.image = UIImage(named: "lake.jpg")
cell.makeRounded()
return cell
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return uniqueCountryArray.count
我的 ProfileCell 编号应为 1,其他单元格的编号应为 uniqueCountryArray.count。但是,当我写 "return uniqueCountryArray.count + 1" 时,它给了我错误。当我写 "return uniqueCountryArray.count" 时,我错过了一个数组元素。
如何动态获取所有数组元素?并且 id 数组大小为 0,我仍然应该显示我的单元格来自配置文件单元格。
【问题讨论】:
什么样的错误?你能给出错误的描述吗? 线程 1:致命错误:索引超出范围 如何在CountryCollectionViewCell
中获得city
?是静态变量吗?
不,它来自像“city = uniqueCountryArray[indexPath.row]”这样的数组
请检查我的回答。
【参考方案1】:
将您的city = uniqueCountryArray[indexPath.row]
更改为city = uniqueCountryArray[indexPath.row-1]
,如下所示
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
if indexPath.row == 0
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProfileCell", for: indexPath) as! ProfileCollectionViewCell
cell.bioLabelText.text = bio
return cell
else
let city = uniqueCountryArray[indexPath.row-1]
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CountryCollectionViewCell
cell.countryLabel.text = city
cell.imgView.image = UIImage(named: "lake.jpg")
cell.makeRounded()
return cell
而numberOfItemsInSection
将是uniqueCountryArray.count+1
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return uniqueCountryArray.count+1
【讨论】:
它有效。非常感谢。你能解释一下我为什么要使用“uniqueCountryArray[indexPath.row-1]”索引吗? 因为 TableView 的第一个单元格是ProfileCollectionViewCell
。所以你的第一个CountryCollectionViewCell
实际上是TableView 的第二个单元格。并且您想在该单元格中显示uniqueCountryArray
的第一个元素。
我完全理解。谢谢。以上是关于使用两种不同类型的单元格时如何确定集合视图的大小的主要内容,如果未能解决你的问题,请参考以下文章