gpt4 book ai didi

swift - UICollectionView - 水平表格 View - Swift - 在每一行中显示不同的图像

转载 作者:行者123 更新时间:2023-11-30 13:18:39 26 4
gpt4 key购买 nike

我将 UICollectionView 放入 TableView 中以显示图像水平地。我只想每行添加 4 个图像,当然这些图像每行应该不同。我的代码是这样的

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 4;
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as! ImageCell

var imageName:String?

if(Constants.counter >= 1 && Constants.counter <= 4) {
imageName = DataSource.eyeColorArray.objectAtIndex(indexPath.row) as? String
}

if(Constants.counter >= 5 && Constants.counter <= 8) {
imageName = DataSource.maskArray.objectAtIndex(indexPath.row)as? String
}

var concurrentQueue : dispatch_queue_t?
concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

dispatch_async(concurrentQueue!) {
let img = UIImage(named: imageName!)
cell._imgView.image = img
}
Constants.counter = Constants.counter + 1
print(Constants.counter)
return cell
}

我的尝试是使用计数器变量Constants.counter,它可以帮助我每 4 步从不同的数组中选取图像。所以这意味着......一开始我的第一行从 DataSource.eyeColorArray 获取图像。在我的第二行中,图像是从我的 DataSource.maskArray 中选取的。

这种情况下的问题是,我的第一行和第二行填充了从最后一个数组(DataSource.maskArray)中选取的图像

有什么想法吗?此致,纳扎尔

最佳答案

我不完全确定是什么触发了您所看到的行为,但您在此处使用 Counter 对如何调用 collectionView:cellForItemAtIndexPath: 做出了许多不安全的假设我认为你应该避免这种方法。

当您加载并滚动 Collection View 时,可以为显示的每个索引路径调用cellForItemAtIndexPath。每个索引路径都会多次调用它。可以按升序或降序对索引路径调用它,对任意顺序的一组索引路径调用它都是有效的。

您的计数器导致这些单元格的内容取决于对cellForItemAtIndexPath的调用顺序和次数。如果您根据索引路径参数的部分和行来选择图像,您将获得更安全、更可预测的实现。

关于swift - UICollectionView - 水平表格 View - Swift - 在每一行中显示不同的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com