在UITableViewCell中以编程方式制作UIButton时出现问题

时间:2018-10-25 11:24:45

标签: ios swift uitableview

我有一个需要按钮的自定义单元格,但是当我在下面输入代码时,它会变成双按钮。

        let cell = tableView.dequeueReusableCell(withIdentifier: "CustomTableViewCell3", for: indexPath) as! CustomTableViewCell3

        var fram = CGRect(x: 0, y: 0, width: 25, height: 25)
        for counter in 0..<socials.count {
            let ofset = 27.5 * Double(socials.count - 1) - Double(counter * 55) + Double(12.5)
            fram.origin.x = (cell.myView.frame.size.width) / 2 - CGFloat(ofset)
            fram.origin.y = cell.myView.frame.size.height / 4
            fram.size = CGSize(width: CGFloat(25), height: CGFloat(25))
            let socialsButton = UIButton(frame: fram)

            socialsButton.setImage(UIImage(named: "\(Array(socials)[counter].key)Icon"), for: .normal)
            cell.myView.addSubview(socialsButton)

你能看看吗

1 个答案:

答案 0 :(得分:0)

您正在循环添加按钮-这就是为什么要获得更多按钮的原因。您需要在自定义UITableView类中添加按钮-在您的情况下为CustomTableViewCell3。 Tableview单元被重用,因此代码将被执行多次。

正确的方法是这样的:

CustomTableViewCell3类:UITableViewCell {     var socialCount:Int! //您可以将其用作单元格的配置点-而不是将计算包含在cellForRow

override func awakeFromNib() {
    super.awakeFromNib()
        // Calculate the frame here
        let socialsButton = UIButton(frame: frame)

        socialsButton.setImage(UIImage(named: "\(Array(socials)[counter].key)Icon"), for: .normal)
        myView.addSubview(socialsButton)
}

如果您需要更多帮助,请告诉我。