在swift 2中的tableview中处理原型单元格中的按钮

时间:2016-04-14 08:17:30

标签: ios uitableview uibutton swift2

我找不到如何处理tableview中的按钮。好吧,我有tableview,显示有一些价值,如100枚硬币,50枚硬币......右侧有按钮。所以问题是,当你按下那个按钮时,该按钮如何知道你点击了特定值的按钮?可以发布一些帖子和代码。

该按钮应执行购买产品的消息

2 个答案:

答案 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循环,我需要解开两次。当我将它打印出来时,它是一个可选的选项,通过展开它,这些类型可以正确地与彼此进行比较。