gpt4 book ai didi

ios - 执行 segue 时,主线程上的 UI 未更新

转载 作者:行者123 更新时间:2023-11-30 12:46:19 24 4
gpt4 key购买 nike

我试图通过执行/准备segue将图像添加到位于另一个 View Controller 中的另一个imageView.image,但是当我尝试在bg线程中执行变量然后跳到主线程时更新一下吧,没用。但如果我删除调度的东西,那么它就起作用了。代码如下:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
SwiftSpinner.show(progress: 0.2, title: "Loading full image, please wait...")
let vc = segue.destination as! PhotoViewController
let cell = sender as! UICollectionViewCell
DispatchQueue.global(qos: .background).async {
if let indexPath = self.collectionView?.indexPath(for: cell) {
let url = URL(string: self.images[indexPath.row].rawURL)
let imageData = NSData(contentsOf: url!)
let image = UIImage(data: imageData as! Data)
DispatchQueue.main.async {
vc.image = image!
vc.mainImage = image!
vc.photographerName = self.images[(indexPath.row)].photographerName
SwiftSpinner.hide()
}
}
}
}

最佳答案

我会推荐KingFisher对于这样的事情。它把所有这些垃圾变成:

 . . .
let cell = sender as! UICollectionViewCell
let url = URL(string: self.images[indexPath.row].rawURL)
vc.imageView.kf.setImage(with: url)
. . .

但是是的。 @dlbuckley是对的。如果你不做像 KingFisher 这样的事情,就不要在prepareForSegue 中做这些事情。

关于ios - 执行 segue 时,主线程上的 UI 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41596108/

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