[ad_1]
I am writing a demo to point out consumer’s tweets, it ought to be seem like this:

The query is:
Each time I scroll to the underside after which scroll again, the tweet’s pictures and feedback are reloaded, even the type grew to become mess up. I do know it one thing do with dequeue, I set Photos(which is an array of UIImageView) to [] each time after dequeue, however it isn’t working. I am confused and could not fairly sleep….
Right here is core code of my TableCell(property and Photos set), which give structure:
class WechatMomentListCell: UITableViewCell{
static let identifier = "WechatMomentListCell"
var content material = UILabel()
var senderAvatar = UIImageView()
var senderNick = UILabel()
var pictures = [UIImageView()]
var feedback = [UILabel()]
override func layoutSubviews() {
//there's a part of Picture set and feedback
if pictures.depend != 0 {
swap pictures.depend{
case 1:
contentView.addSubview(pictures[0])
pictures[0].snp.makeConstraints{ (make) in
make.main.equalTo(senderNick.snp.main)
make.prime.equalTo(content material.snp.backside)
make.width.equalTo(180)
make.peak.equalTo(180)
}
default:
for index in 0...pictures.count-1 {
contentView.addSubview(pictures[index])
pictures[index].snp.makeConstraints{ (make) in
make.main.equalTo(senderNick.snp.main).inset(((index-1)%3)*109)
make.prime.equalTo(content material.snp.backside).offset(((index-1)/3)*109)
make.width.equalTo(90)
make.peak.equalTo(90)
}
}
}
}
if feedback.depend != 0, feedback.depend != 1 {
for index in 1...feedback.count-1 {
feedback[index].backgroundColor = UIColor.grey
contentView.addSubview(feedback[index])
feedback[index].snp.makeConstraints{(make) in
make.main.equalTo(senderNick)
make.backside.equalToSuperview().inset(index*20)
make.width.equalTo(318)
make.peak.equalTo(20)
}
}
}
}
Right here is my ViewController, which give datasource:
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 such thing as a WechatMomentList")
}
let tweet = viewModel.tweetList?[indexPath.row]
for i in tweet?.pictures ?? [] {
let flagImage = UIImageView()
flagImage.sd_setImage(with: URL(string: i.url))
tweetCell.pictures.append(flagImage)
}
for i in tweet?.feedback ?? [] {
let flagComment = UILabel()
flagComment.textual content = "(i.sender.nick) : (i.content material)"
tweetCell.feedback.append(flagComment)
}
return tweetCell
}
The Photos GET request has been outline at ViewModel utilizing Alamofire.
If I scroll the display screen, the feedback will load once more and pictures had been mess up like this.
[ad_2]

