Swift5.0 TableViewCell添加Button按钮
2021-04-23 本文已影响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按钮添加到
Cell
的contentView
上面。
发现将控件添加到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上按钮点击事件无法响应的问题,欢迎大家来补充交流