【问题标题】:Swift - Button action not triggered in table view cellSwift - 在表格视图单元格中未触发按钮操作
【发布时间】:2016-07-30 15:00:47
【问题描述】:

我有一个包含 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视图中取出按钮!

【问题讨论】:

    标签: swift uitableview button cell ios9.3


    【解决方案1】:

    您可以通过以编程方式执行按钮来阻止 segue 在按下按钮时执行。您可以执行以下操作:

    1. 删除从单元格到另一个视图控制器的 segue,并将其从 TableViewController 更改为另一个视图控制器

    2. 在 TableViewController 类中创建一个变量,例如:var buttonPressed = false

    3. 在您的按钮操作中设置 buttonPressed 为 true

    4. 在 didSelectRow 中,检查 buttonPressed 是否为 true,然后 performSegue 并将 buttonPressed 更改为 false,否则什么也不做

    5. 如前所述,将按钮从容器移动到内容视图

    【讨论】:

    • 谢谢。但它仍然不起作用。 :( 我对每个单元格的 segue 不是来自单元格,而是来自 ViewController。我从第一个 VC 上的黄色图标 ctrl+拖动到第二个 VC。事实上,从不调用方法rent(),它总是执行segue...
    • 您可以尝试将 Rent 按钮移出 ContainerView 并移入 ContentView 吗?第一个停靠点应该是正确触发此操作
    • 我将按钮移出容器视图,它可以工作了!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 2011-04-17
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多