我正在尝试为在表格视图单元格中按下的按钮运行一个动作。下面的代码在我的表视图控制器类中。
在我的UITableViewCell类的称为requestCell的插座中,该按钮已被描述为“是”。
我正在使用“解析”来保存数据,并且想在按下按钮时更新对象。我的objectIds数组可以正常工作,cell.yes.tag还会在日志中输出正确的数字,但是,为了正常运行查询,我无法将该数字输入“连接”函数中。
我需要一种获取单元格的indexPath.row的方法,以找到正确的objectId。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as requestsCell // Configure the cell... cell.name.text = requested[indexPath.row] imageFiles[indexPath.row].getDataInBackgroundWithBlock{ (imageData: NSData!, error: NSError!) -> Void in if error == nil { let image = UIImage(data: imageData) cell.userImage.image = image }else{ println("not working") } } cell.yes.tag = indexPath.row cell.yes.targetForAction("connected", withSender: self) println(cell.yes.tag) return cell } func connected(sender: UIButton!) { var query = PFQuery(className:"Contacts") query.getObjectInBackgroundWithId(objectIDs[sender.tag]) { (gameScore: PFObject!, error: NSError!) -> Void in if error != nil { NSLog("%@", error) } else { gameScore["connected"] = "yes" gameScore.save() } } }
Swift 4和Swift 5:
您需要为该按钮添加目标。
myButton.addTarget(self, action: #selector(connected(sender:)), for: .touchUpInside)
当然,由于您正在使用它,因此您需要设置该按钮的标签。
myButton.tag = indexPath.row
您可以通过对UITableViewCell进行子类化来实现。在界面生成器中使用它,在该单元格上放置一个按钮,通过插座连接它,然后就可以了。
要在连接的功能中获取标签:
@objc func connected(sender: UIButton){ let buttonTag = sender.tag }