gpt4 book ai didi

ios - 有时分配给 UITableViewCell 中的 UIImageView 的图像不正确

转载 作者:行者123 更新时间:2023-11-30 10:57:47 26 4
gpt4 key购买 nike

我有一个有几百人的群聊,当我快速滚动时,有时用户图像会从某处跳到另一处,或者向用户显示不正确的图像。

我已经关注了其他一些帖子,但我似乎仍然做错了一些事情。这里有什么突出的地方吗?我可以做些什么来解决这个问题?

谢谢!

final class MessageCell: UITableViewCell {

private lazy var profileImageView: UIImageView = {
let imageView = UIImageView()
imageView.layer.cornerRadius = 20
imageView.clipsToBounds = true

return imageView
}()

// MARK: – Init

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)

selectionStyle = .none

addSubview(profileImageView)

setupConstraints()
}

private func setupConstraints() {
constrain(profileImageView) {
let size: CGFloat = 36
$0.width == size
$0.height == size
$0.bottom == $0.superview!.bottom - CGFloat(3)
$0.left == $0.superview!.left + CGFloat(12)
}
}


func configure(with presentable: CellPresentable) {
self.presentable = presentable

if let sender = presentable.sender, presentable.isFirstMessage {
profileImageView.setImage(url: (sender.object(forKey: "picture") as? PFFile)?.url, fallbackText: presentable.username)
} else {
PFUser.query()?.whereKey("objectId", equalTo: presentable.message.senderUserId).getFirstObjectInBackground { [weak self] user, error in
self?.profileImageView.setImage(url: (user?.object(forKey: "picture") as? PFFile)?.url, fallbackText: presentable.username)
}
}
}

// MARK: Reuse -

override func prepareForReuse() {
super.prepareForReuse()

profileImageView.kf.cancelDownloadTask()
profileImageView.image = nil
}

}

在我的 View Controller 中:

let cell = tableView.dequeueReusableCell(withIdentifier: "MessageCell") as! MessageCell
let presentable = CellPresentable(for: message, isFirstMessage: isFirstMessage, isLastMessage: isLastMessage)
cell.configure(with: presentable)

return cell

最佳答案

在 MessageCell 的配置函数中尝试以下代码

profileImageView.image = nil

新的函数代码:

func configure(with presentable: CellPresentable) {
self.presentable = presentable
profileImageView.image = nil
if let sender = presentable.sender, presentable.isFirstMessage {
profileImageView.setImage(url: (sender.object(forKey: "picture") as? PFFile)?.url, fallbackText: presentable.username)
} else {
PFUser.query()?.whereKey("objectId", equalTo: presentable.message.senderUserId).getFirstObjectInBackground { [weak self] user, error in
self?.profileImageView.setImage(url: (user?.object(forKey: "picture") as? PFFile)?.url, fallbackText: presentable.username)
}
}
}

关于ios - 有时分配给 UITableViewCell 中的 UIImageView 的图像不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53746289/

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