swift - 如何选择要在表格视图中显示的某些图像
问题描述
我创建了一个表格视图(Xcode 11、Swift 5),其中放置了一个集合视图,并且还创建了一个图像数组:
let badgesImages: [UIImage] = [
UIImage(named: "Plastic Bottle Challenge bronze")!,
UIImage(named: "Plastic Bottle Challenge silver")!,
UIImage(named: "Plastic Bottle Challenge gold")!,
UIImage(named: "Car Challenge bronze")!,
UIImage(named: "Car Challenge silver")!,
UIImage(named: "Car Challenge gold")!,
]
在这里回忆:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell
cell.badgesImageView.image = badgesImages[indexPath.item]
return cell
}
我需要从数组中选择三个图像来填充表格视图的一个单元格,并且我需要对每个单元格重复该过程。我怎样才能做到这一点?提前致谢!
解决方案
import Foundation
let badgesImages = [
"Plastic Bottle Challenge bronze",
"Plastic Bottle Challenge silver",
"Plastic Bottle Challenge gold",
"Car Challenge bronze",
"Car Challenge silver",
"Car Challenge gold"
]
extension Array {
func pick(_ n: Int) -> [Element] {
guard count >= n else {
fatalError("The count has to be at least \(n)")
}
guard n >= 0 else {
fatalError("The number of elements to be picked must be positive")
}
let shuffledIndices = indices.shuffled().prefix(upTo: n)
return shuffledIndices.map {self[$0]}
}
}
badgesImages.pick(3)
推荐阅读
- asynchronous - Web 应用程序如何受并发影响?
- javascript - 为什么 requestMIDIAccess 在本地工作而不是远程工作?
- ruby-on-rails - Rails 5 缓存在本地或生产环境中不起作用
- c++ - 运行基本 OpenCV 命令 VideoCapture 时 Qt 崩溃
- wpf - WPF:如何仅在选定项目上设置属性而不是项目源
- c++ - 重载 operator+ 两次(在类内和类外)
- c# - 使用 MemoryStream 的 Open XML WordprocessingDocument 为 0KB
- c++ - 关闭连接并从向量中删除会停止程序
- python - Spark Streaming - Kafka 自动偏移重置 (Spark 2.4.5, kafka 0.8.2)
- php - 下载前检查有效/活动 URL - Laravel 7