我正在撰寫一個演示來顯示用戶的推文。
問題是: 每次我滾動到底部然后再滾動時,推文的影像和評論都會重新加載,甚至樣式也變得一團糟。我知道這與出隊有關,每次出隊后我都將 Images(它是 UIImageView 的陣列)設定為 [],但它不起作用。我很迷茫,睡不著......
這是我的 TableCell(屬性和影像集)的核心代碼,它提供布局:
class WechatMomentListCell: UITableViewCell{
static let identifier = "WechatMomentListCell"
var content = UILabel()
var senderAvatar = UIImageView()
var senderNick = UILabel()
var images = [UIImageView()]
var comments = [UILabel()]
override func layoutSubviews() {
//there is part of Image set and comments
if images.count != 0 {
switch images.count{
case 1:
contentView.addSubview(images[0])
images[0].snp.makeConstraints{ (make) in
make.leading.equalTo(senderNick.snp.leading)
make.top.equalTo(content.snp.bottom)
make.width.equalTo(180)
make.height.equalTo(180)
}
default:
for index in 0...images.count-1 {
contentView.addSubview(images[index])
images[index].snp.makeConstraints{ (make) in
make.leading.equalTo(senderNick.snp.leading).inset(((index-1)%3)*109)
make.top.equalTo(content.snp.bottom).offset(((index-1)/3)*109)
make.width.equalTo(90)
make.height.equalTo(90)
}
}
}
}
if comments.count != 0, comments.count != 1 {
for index in 1...comments.count-1 {
comments[index].backgroundColor = UIColor.gray
contentView.addSubview(comments[index])
comments[index].snp.makeConstraints{(make) in
make.leading.equalTo(senderNick)
make.bottom.equalToSuperview().inset(index*20)
make.width.equalTo(318)
make.height.equalTo(20)
}
}
}
}
這是我的 ViewController,它提供資料源:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let tweetCell = tableView.dequeueReusableCell(withIdentifier: WechatMomentListCell.identifier, for: indexPath) as? WechatMomentListCell else {
fatalError("there is no WechatMomentList")
}
let tweet = viewModel.tweetList?[indexPath.row]
for i in tweet?.images ?? [] {
let flagImage = UIImageView()
flagImage.sd_setImage(with: URL(string: i.url))
tweetCell.images.append(flagImage)
}
for i in tweet?.comments ?? [] {
let flagComment = UILabel()
flagComment.text = "\(i.sender.nick) : \(i.content)"
tweetCell.comments.append(flagComment)
}
return tweetCell
}
影像 GET 請求已使用 Alamofire 在 ViewModel 中定義。
第一次是正確的。但是,如果我滾動螢屏,評論將再次加載,影像會像這樣混亂。

uj5u.com熱心網友回復:
我在您的 tableview 單元格中發現了問題。在單元格中,您有兩個這樣的變數。
var images = [UIImageView()]
var comments = [UILabel()]
每次使用此單元格時,都會附加影像和評論。確保每次使用此單元格時都重置這些陣列。比如在初始化時將主題設定為空。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384065.html
標籤:ios 迅速 合适的视图 工具包 sdwebimage
