在首次构建应用程序时,似乎工作正常,请在表视图 中查看其中每个图片是一个单元格的图片。 (我正在努力正确放置它们)
我面临的问题是:一旦向下滚动并再次向上滚动。每个单元格数据都得到了汇总。请看图片。经过数小时的在线搜索和解码后,我仍然不知道编码器有什么问题。请指出我所缺少的。我已附上我的代码。
我正在使用Ray Wenderlich中的教程代码,并在func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
方法中添加了以下代码。是的,我将每个单词都用作UIBotton来触发操作。
添加
"cell.contentView.subviews.filter { $0 is UILabel }.forEach { $0.removeFromSuperview() }"
无法解决问题。请给我一个完整的例子吗?(工作一个)谢谢。
let wholeSentense = artist.bio
let whoeSentenseArray = wholeSentense.components(separatedBy: " ")
var xPos = CGFloat(0)
for element in whoeSentenseArray {
var button = UIButton()
button.setTitle(element, for: UIControlState.normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 15)
let buttonTitleSize = (element as NSString).size(attributes: [NSFontAttributeName : UIFont.boldSystemFont(ofSize: 15 + 1)])
button.frame.size.height = buttonTitleSize.height * 1.5
button.frame.size.width = buttonTitleSize.width
button.frame.origin.x += xPos
xPos = xPos + buttonTitleSize.width + 10
button.setTitleColor(UIColor.black, for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: UIControlEvents.touchDown)
cell.addSubview(button)
}
return cell
}
func buttonAction(sender: UIButton!) {
print("\n\n Title \(String(describing: sender.titleLabel?.text)) TagNum \(sender.tag)")
// print("Button tapped")
}
答案 0 :(得分:1)
我认为您最好将此复杂的逻辑移至UITableViewCell
子类中。这是一个粗糙的骨架:
class MyCustomTableViewCell : UITableViewCell {
@IBOutlet var imageView: UIImageView!
var sentence: String! {
didSet { <add your logic here> }
}
}
SO和其他网站上有很多有关如何创建自定义表格视图单元格的资源,例如this。
无论如何,无论选择哪种方式,都需要注意表视图单元已被重用。您需要先删除所有标签,然后再添加它们:
cell.contentView.subviews.filter { $0 is UILabel }.forEach { $0.removeFromSuperview() }