美文网首页
Swift5.0 TableViewCell添加Button按钮

Swift5.0 TableViewCell添加Button按钮

作者: 孙国立 | 来源:发表于2021-04-23 14:58 被阅读0次
    问题描述

    公司项目中有一个列表使用tableViewCell实现的,在tableViewCell中添加了两个按钮,但是在点击按钮的时候发现按钮的点击事件没有相应

    排查问题
    • 查看代码是否有问题
      cell添加控件的代码
            self.addSubviews([headerView,contentInfoView])
            headerView.addSubviews([orderNumberLabel,statusLabel])
            contentInfoView.addSubviews([toDetailLabel,timeLabel,questionLabel,userInfoView,lineView,operateRightBtn,operateLeftBtn,madeTimeLabel])
    

    在此处看来貌似没有什么问题。然后我又做了如下的操作

    • 删除现有的所有的添加在Cell中的控件,定义一个占满Cell控件的button按钮
    //伪代码
    let btn = UIButton.init(frame: CGRect(x: 0 ,y : 0 ,width : cell.width, height : cell.height))
    btn.addTarget(self, action: #selector(act), for: .touchUpInside)
    self.addSubview(btn)
    

    发现这时候添加上的button按钮点击事件还是不响应
    发现此问题后又做了下面的这个操作

    • 将button按钮添加到CellcontentView上面。
      发现将控件添加到contentView以后按钮的点击事件正常

    通过这个问题我们可以大体的猜到cell的contentView从以前的下层位置提升到了最上层来了,于是我使用了如下的代码进行了测试发现按钮的点击事件依然好用

            let btn = UIButton.init(frame: CGRect(x: 0, y: 0, width: cellWidth, height: cellHeight - 10))
            btn.backgroundColor = .red
            btn.addTarget(self, action: #selector(act), for: .touchUpInside)
            self.insertSubview(btn, aboveSubview: contentView)
    

    此处使用insertSubview(btn, at: )是没有效果的。这一块我没有去查询contenView具体是如何添加的,所以不知道contentView对应的值是多少也就没法测试。如果有哪位大佬研究过这个问题还请不吝赐教,在此先行谢过了。

    关于其他一些关于tableViewCell上按钮点击事件无法响应的问题,欢迎大家来补充交流

    相关文章

      网友评论

          本文标题:Swift5.0 TableViewCell添加Button按钮

          本文链接:https://www.haomeiwen.com/subject/unmcrltx.html