ios - 如何将二维数组填充到 CollectionView 上?
问题描述
目前,我有一个 10 行和 10 列的二维数组,我想使用 Collection View 将它打印到前端。但是,我只能将二维数组中第一行的数据获取到集合视图中。我想检索所有行。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as? WordSearchTableViewCell, let columns = grid.first?.count{
//print(columns)
let item = CGFloat(indexPath.item)
//print("item: ", item)
let row = floor(item / CGFloat(columns))
//print("row: " , row)
let column = item.truncatingRemainder(dividingBy: CGFloat(columns))
print("column: ",column)
//setCharacter
cell.charLabel.text = grid[Int(row)][Int(column)]
return cell
}
print("error")
return WordSearchTableViewCell()
}
解决方案
我设法解决了我自己的问题。所以我认为我犯的一个错误是我只返回一行而不是 10 因此需要有 numberOfSections。所以即使结果能够显示,也没有足够的 collectionviewCell。
对于循环过程,我设置了一个计数器,该计数器在每次列到达该行的数组的最后一个元素时跟踪行号,将会有一个增量。
不确定我的解释是否正确。
var counter: Int = 0
func numberOfSections(in collectionView: UICollectionView) -> Int {
//return columns
return grid.count
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
//return rows
return grid[section].count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as? WordSearchTableViewCell, let columns = grid.first?.count{
let item = indexPath.item
let row : Int = counter
let column : Int = Int(CGFloat(item).truncatingRemainder(dividingBy: CGFloat(columns)))
//rowNum + 1 each time reaches last item of column
if column == 9 {
counter = counter + 1
}
//setCharacter
cell.charLabel.text = grid[row][column]
return cell
}
print("error")
return UICollectionViewCell()
}
推荐阅读
- reactjs - React Native:端口的作用是什么?
- webview - wxPython html2.WebView 和垂直滚动条
- c - stm8s cco 标志从未设置
- ios - 无法为模拟器构建应用程序。在 iPhone 11 上启动应用程序时出错
- html - 将三角形指针添加到导航项/菜单底部的中心
- python - 如何在 PyGame 中绘制一个洗牌的楼梯
- python - Kivy 矩形没有正确调整大小
- c++ - std::vector 初始化的模板参数
- javascript - D3 未正确排序 x 轴
- python - 如果对象出现在网络摄像头上超过 5 秒,则打印一条消息 - Opencv Python