在UITableviewcell中调用多个按钮

时间:2018-06-16 19:45:32

标签: ios swift

我有一个带有4个按钮的xib文件,每个按钮都有一个单击时必须启动的功能。该函数必须获取数据,并且在获取数据之后它应该执行segue。我只允许使用类型为UITableViewCell的nib,并在viewcontroller内的tableview中显示它。

点击tableviewcell时是否可以让每个按钮启动所需的功能,如果是这样,我该怎么做呢。

我已经查看了几天与我类似的问题,并尝试了所有建议的解决方案,但他们并没有工作,例如

enter image description here

Show ViewController from XIB-file-Button - Swift

Perform segue from button in XIB

Swift - Segue from Button inside a cell

Perform segue from button in XIB

Perform Segue from Xib programmatically

1 个答案:

答案 0 :(得分:1)

当然,在代码中使事件传递然后访问索引路径非常简单。

首先将目标添加到按钮。

button.addTarget(self, action: #selector(someAction(_:event:)), for: .touchUpInside)

然后使用此代码开始您的行动。

@objc func someAction(_ button: UIButton, event: UIEvent) {
    guard let location = event.allTouches?.first?.location(in: tableView),
        let indexPath = tableView?.indexPathForItem(at: location)
        else {
            return
    }

    // TODO: fetch data

    performSegue(withIdentifier: "mySegueID", sender: button)
}

此外,如果您的数据是异步的,您可以使用像PromiseKit这样的东西。 https://github.com/mxcl/PromiseKit