我的JsonData -
let imagestring : String? = (myData as AnyObject).value(forKey: "Post_mid_image") as? String
if imagestring != nil {
let imageTrueString = "https://www.zdoof.com/" + imagestring!
self.imageStringArray.append(imageTrueString )
}
if let NameString = (myData as AnyObject).value(forKey: "Name") as? String {
self.nameStringArray.append(NameString)
}
当我尝试将其设置为表格视图单元格
时func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.postLableArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reUse", for: indexPath)
let myImage = cell.viewWithTag(30) as! UIImageView
myImage.clipsToBounds = true
if indexPath.row < imageStringArray.count {
if let myImageString = imageStringArray[indexPath.row] as? String {
let ImageUrl = URL.init(string: myImageString)
myImage.kf.setImage(with: ImageUrl)
}
}
return cell
}
图像在每个单元格中重复。为什么会这样?请帮忙
答案 0 :(得分:0)
根据您提供的回复,您可以显示如下图像:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let dict = myData as AnyObject
let cell = tableView.dequeueReusableCell(withIdentifier: "reUse", for: indexPath)
let myImage = cell.viewWithTag(30) as! UIImageView
if dict["Post_mid_image"] != nil {
let imageUrl = URL.init(string: strImageUrl)
myImage.kf.setImage(with: imageUrl)
} else {
//Set placeholder image showing no image available
}
return cell
}
答案 1 :(得分:0)
问题在于表格视图的单元格可重用性,您必须处理它,您可以使用SDWebImage库在单元格中加载图像,或者您可以拥有自己的图像缓存来缓存具有键/值的图像,如下所示图片网址,因此在indexpath处动态检查图片网址,并使用该图片网址作为密钥加载缓存图片。
希望它有所帮助!!
答案 2 :(得分:0)
这是因为使用tableView.dequeueReusableCell(withIdentifier: "reUse", for: indexPath)
。
基本上每当您使用dequeueReusableCell(withIdentifier:,For:)
时,它将对所有数据使用相同的单元格。这意味着屏幕上的单元格总数只会加载,对于所有其他单元格,它将使用具有不同值的相同单元格。
现在考虑一个场景,你在tableview中有500个单元格,但我们最多可以管理10-15个单元格,所以对于所有其他单元格,它将使用相同的单元格只修改单元格的值。
所以你可以在这里做的是,无论何时使用if
声明,都不要忘记添加else
。
因为在一种情况下,如果单元格的背景设置为红色,那么我们需要为其他方案添加其他内容,因为只是重复了单元格。