小编sha*_*azz的帖子

swift iOS - 快速滚动后混合的UICollectionView图像

我是swift和iOS编程的新手,但我已经能够在Xcode中为我的应用程序构建一个基本稳定的启动界面.CollectionView从我家庭网络服务器上的csv文件创建的字典数组中获取图像和文本.cvs文件包含以下格式的数据(注意,已更改网址以保护许可图像):

csv文件

csv file is @ url https://myserver.com/csv.txt and contains the following

Title";"SeriesImageURL
Title1";"https://licensedimage.com/url1
Title2";"https://licensedimage.com/url2
...
Title1000";"https://licensedimage.com/url1000
Run Code Online (Sandbox Code Playgroud)

问题是当快速滚动CollectionView时,单元格将抓取不正确的图像.值得注意的是,如果您进行慢速或中速滚动,则在将正确的图像渲染到正确的单元格之前将显示不同的图像(单元格的标签文本始终是正确的,只有图像永远关闭).在图像与具有标签的正确单元格不匹配之后,CollectionView中的所有其他单元格也将显示不正确的图像.

例如,单元格1-9将显示Title1-9与正确的Image1-9当缓慢滚动时,单元格19-27将显示标题19-27,将简要显示图像10-18,然后显示正确的图像19-27.当快速滚动大量单元格(例如从单元格1-9到单元格90-99)时,单元格90-99将显示标题90-99,将显示图像10-50ish,然后将错误地保留在图像41-50上(或左右).当进一步滚动时,单元格100+将显示正确的标题,但仅显示图像41-50范围内的图像.

我认为这个错误或者是因为没有正确处理单元重用,没有正确处理图像的缓存,或者两者兼而有之.它也可能是我作为初学iOS/swift程序员看不到的东西.我试图使用完成修饰符实现一个请求,但似乎无法使我的代码设置方式正常工作.我将不胜感激任何帮助,并解释为什么修复工作的方式.谢谢!

相关代码如下.

SeriesCollectionViewController.swift

class SeriesCollectionViewController: UICollectionViewController, UISearchBarDelegate {

let reuseIdentifier:String = "SeriesCell"

// Set Data Source Models & Variables
struct seriesModel {

    let title: AnyObject
    let seriesimageurl: AnyObject
}
var seriesDict = [String:AnyObject]()
var seriesArray = [seriesModel]()

// Image Cache
var imageCache = NSCache() 

override func viewDidLoad() {
    super.viewDidLoad()
    // Grab Data from Source
    do {

        let url = NSURL(string: "https://myserver.com/csv.txt") …
Run Code Online (Sandbox Code Playgroud)

image custom-cell collectionview ios swift

10
推荐指数
2
解决办法
6163
查看次数

标签 统计

collectionview ×1

custom-cell ×1

image ×1

ios ×1

swift ×1