我找不到如何处理tableview中的按钮。好吧,我有tableview,显示有一些价值,如100枚硬币,50枚硬币......右侧有按钮。所以问题是,当你按下那个按钮时,该按钮如何知道你点击了特定值的按钮?可以发布一些帖子和代码。
该按钮应执行购买产品的消息
答案 0 :(得分:1)
在您的控制器中创建一个方法,即
func btnClickAction(sender: UIButton)
{
var superView = sender.superview
while superView?.isKindOfClass(UITableViewCell) == false
{
superView = superView?.superview
}
var cell = superView as! UITableViewCell
var indexPath = self.tableView.indexPathForCell(cell)! as NSIndexPath
}
从上述indexPath
方法中,您可以找到点击按钮的哪个单元格。
在cellForRowAtIndexPath
中,您需要将按钮的目标添加到上述方法,即
btn.addTarget(self, action: "btnClickAction", forControlEvents: UIControlEvents.TouchDragInside)
答案 1 :(得分:0)
我知道这有点晚了,但我真的很喜欢这个解决方案,所以我希望它可以帮助别人!这是@Jatin Chauhan的答案,但更新了。
Swift 3
@IBAction func actionFromButtonPress(_ sender: Any) {
var superView = (sender as AnyObject).superview
while type(of: (superView!)!) != UITableViewCell.self
{
superView = (superView as AnyObject).superview
}
let cell = superView as! UITableViewCell
let indexPath = self.tableView.indexPath(for: cell)! as NSIndexPath
let correspondingDataInDataSource = self.tableViewDataSource[indexPath.row]
self.tableView.reloadData()
}
使用此功能,您可以将xib或storyboard中的按钮连接到此处的IBAction。
注意:如果你有一个像我一样的自定义UITableViewCell你不应该比较类型" UITableViewCell.self"但改为到" YourCustomTableViewCellClass.self"。
注意2:请注意,对于while循环,我需要解开两次。当我将它打印出来时,它是一个可选的选项,通过展开它,这些类型可以正确地与彼此进行比较。