我想点击tableView Cell中的按钮时发送数据

时间:2015-10-18 01:29:47

标签: swift parse-platform

我正在为我的应用实现commentView。我有一个主视图,其中tableview包含图片和一个按钮去评论视图。 我希望当用户点击表视图中的注释按钮时,视图显示注释视图并通过prepareforSegue方法传递PFObject。

现在评论按钮有效,但我有一个来自prepareforsegue的错误 这是我的代码。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if (segue.identifier == "mainToComment") {


let destViewController : CommentVC = segue.destinationViewController as! CommentVC
destViewController.parentObjectID = parentObjectID
let selectedRowIndex = self.tableView.indexPathForSelectedRow

destViewController.object = (postsArray[(selectedRowIndex?.row)!] as? PFObject)

这是我按钮的工作原理。

 @IBAction func commentButtonTapped(sender: AnyObject) {

    let button = sender as! UIButton
    let view = button.superview!
    let cell = view.superview as! MainTVCE
    let indexPath = tableView.indexPathForCell(cell)
    parentObjectID = postsArray[(indexPath?.row)!].objectId!!

当我调试时,selectedRowIndex没有值(nil) 我认为这是因为我点击按钮而不是单元格。

如何为此设置indexPath? 要么 我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:1)

我不知道您的主TableViewCell视图控制器的名称。假设我将此视图控制器命名为MainTableViewCell

我在MainTableViewCell中创建了一个闭包:

var didRequestToShowComment:((cell:UITableViewCell) -> ())?

点击按钮评论时:

@IBAction func commentButtonTapped(sender: AnyObject) {
    self.didRequestToShowComment?(self) // self is this UITableViewCell
}

在主视图控制器的table cellForRowAtIndex...中。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    ...
    mainTableViewCell.didRequestToShowComment = { (cell) in
        let indexPath = tableView.indexPathForCell(cell)
        let objectToSend = postsArray[indexPath.row] as? PFObject
        // Show your Comment view controller here, and set object to send here
    }
    ...


    return cell
}