我有一个带有4个按钮的xib文件,每个按钮都有一个单击时必须启动的功能。该函数必须获取数据,并且在获取数据之后它应该执行segue。我只允许使用类型为UITableViewCell的nib,并在viewcontroller内的tableview中显示它。
点击tableviewcell时是否可以让每个按钮启动所需的功能,如果是这样,我该怎么做呢。
我已经查看了几天与我类似的问题,并尝试了所有建议的解决方案,但他们并没有工作,例如
Show ViewController from XIB-file-Button - Swift
Perform segue from button in XIB
Swift - Segue from Button inside a cell
答案 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