小编Mat*_*ite的帖子

使用Kingfisher,图像无法正确加载到UITableView中

我刚刚开始使用KingFisher。

当您向下快速滚动UITableView时,所有网络/下载请求都将备份,因此当它停止滚动时,它仍会完成先前的请求。

这会导致所有图像闪烁着不同的图片,直到完成所有备份请求。

这是我的代码,用于从缓存或网络中检索图像。

if ImageCache.defaultCache.cachedImageExistsforURL(finished_URL!) == true {
            print("image is already cached.")

            if cell.tag == indexPath.row{
                cell.card_imageIV.image = UIImage(imageLiteral: "ic_error")
                KingfisherManager.sharedManager.retrieveImageWithURL(finished_URL!, optionsInfo: nil, progressBlock: nil, completionHandler: { (image, error, cacheType, imageURL) -> () in
                    cell.card_imageIV.image = image
                    print("Retrieved cached image")
                })
            }

        }else{
            cell.card_imageIV.kf_setImageWithURL(finished_URL!, placeholderImage: self.placeholderImage, optionsInfo: nil, completionHandler: { image, error, cacheType, imageURL in
                print("\(card_name): Finished")
            })
        }
Run Code Online (Sandbox Code Playgroud)

我尝试使用https://github.com/onevcat/Kingfisher上的以下文档来取消以前的所有下载任务,但使用了却没有帮助。

我尝试以下代码:

// The image retrieving will stop.
imageView.kf_cancelDownloadTask()
Run Code Online (Sandbox Code Playgroud)

这只会取消当前的单元格,至少在我看来。

scroll image cells uitableview swift

3
推荐指数
1
解决办法
2837
查看次数

Swift-使用单例共享变量-不传递

所以这真令人沮丧。我正在尝试使用单例传递字符串变量,但它没有在第二个UIViewController上传递。

Singleton.swift

class CardName {

var cardName : String = ""

class var sharedInstance : CardName {
    struct Static {
        static let instance : CardName = CardName()
    }
    return Static.instance
}

var returnedCardName : String {
    get{
        return self.cardName
    }

    set {
        self.cardName = newValue
    }
}}
Run Code Online (Sandbox Code Playgroud)

查看1:

CardName.sharedInstance.returnedCardName = "Single pass test"

print("Shared instance name set: \(CardName.sharedInstance.returnedCardName)")
Run Code Online (Sandbox Code Playgroud)

print()成功显示了正确设置的字符串。

查看2:

let card_name_shared = CardName.sharedInstance

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

    card_Name = card_name_shared.returnedCardName
    print("Passed Card Name: \(self.card_name_shared.returnedCardName)")

}
Run Code Online (Sandbox Code Playgroud)

查看2个print()结果: …

singleton segue swift

0
推荐指数
1
解决办法
3610
查看次数

标签 统计

swift ×2

cells ×1

image ×1

scroll ×1

segue ×1

singleton ×1

uitableview ×1