我有一个包含 TableView 的 ViewController。我希望在每个单元格中都有一个执行某些操作的红色按钮(让我们说“你好”进行测试),或者当我在任何地方触摸单元格而不是在按钮上时,我会执行 segue。
但即使我触摸按钮,执行的还是 segue。我尝试在 SF 上进行一些搜索,但没有一个问题对我有帮助......
我不知道这是否正常,但是当我触摸单元格时,所有行的白色背景都变成灰色,甚至是红色按钮的背景。
在情节提要中,我有这个单元格层次结构:
在单元格和按钮上都启用了用户交互。
在我发现他们说的问题中,在“披露指示器”上的单元格组“附件”上,我做到了,但如果可能的话,我想将其保持在“无”。我还为单元格设置了一个自定义类,代码如下:
class MyTableViewCell: UITableViewCell {
@IBOutlet weak var rentButton: UIButton? // I use this class for 2 tableview almost similar, but in the other I don't have the redButton, that's why I put an '?'
}
我还将 tableView 的委托和数据源设置为我的 ViewController,这是我的视图控制器的代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MyTableViewCell
cell.rentButton!.tag = indexPath.row
cell.rentButton!.addTarget(self, action: #selector(MyViewController.rent(_:)), forControlEvents: .TouchUpInside)
return cell
}
// Rent() is never called:
func rent(sender: UIButton) {
print("here \(sender.tag)")
}
编辑:解决方案是从 conainer 视图中取出按钮!