以下代码,点击事件有效。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.value1, reuseIdentifier: "SwiftCell")
let button = UIButton()
button.setTitle(hiddenGear ? "+" : "-", for: .normal)
button.setTitleColor(UIColor.lightGray, for: .normal)
button.addTarget(self, action:#selector(self.toggleGear), for: .touchUpInside)
button.frame = CGRect(x: self.view.frame.width - 36, y: 0, width: 30, height: 30)
button.backgroundColor = UIColor.red
cell.addSubview(button)
但我想要的如下:
将UIButton移出 uitableview单元格,并且点击事件不起作用。
button.frame = CGRect(x: self.view.frame.width - 36, y: -30, width: 30, height: 30)
尝试使用cell.bringSubview(toFront: button)
,但它也不起作用。有什么想法吗?
答案 0 :(得分:1)
这是非法的:
cell.addSubview(button)
您可能无法向单元格添加视图。您必须仅将视图添加到单元格contentView
。
但是内容视图并没有一直延伸到右边。如果您希望视图一直在右侧,则必须将其作为附件视图提供。
最后,您不能轻易地在单元格边界外添加工作按钮,因为超级视图边界之外的子视图不可触摸。但是,你可以通过改变superview的命中测试来使它可触摸。您需要覆盖此方法:
https://developer.apple.com/documentation/uikit/uiview/1622469-hittest
答案 1 :(得分:0)
您需要使用相对于UITableViewCell
顶部的约束。此外,我可以看到你正在努力创造一个' +'角落里的(加号)图标。考虑使用对象库中的Navigation Item
。
答案 2 :(得分:0)
首先,不希望在重复使用的情况下在cellForRow中添加UI元素,其次你可以将按钮封装在单元格中并使用背景颜色来伪造它是否在单元格之外如果按钮应该在每个单元格中,否则你必须相对于mainView(self.view)
添加它