2015-10-18 93 views
1

一个按钮,我实现了我的应用程序一个评论查看发送数据。我有一个主视图,它是tableview包含图片和一个按钮去评论视图。 我希望当用户在表格视图中点击评论按钮时,视图显示评论视图并​​通过prepareforSegue方法传递PFObject。我想,当我挖掘的tableView细胞

现在评论按钮的作品,但我这里有从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没有值(无) 我认为原因我点击按钮,而不是细胞。

如何设置indexPath这个? 或 我如何使它工作?

回答

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 
} 
+0

工作很不错!我从你的指导中学到了很多东西。 –

+0

//在这里显示你的评论视图控制器,并设置对象在这里发送 self.objectTwo = objectToSend! self.performSegueWithIdentifier(“mainToComment”,sender:self)我声明上面的objectTwo,有没有更好的方法来设置对象? –

+0

我通常通过后面的代码呈现视图控制器,而不是通过故事板中定义的'segue'显示。让commectVC = ....; commentVC.data = objectToSend; self.presentViewController(commentVC,animated:true,completion:nil)。这可能不是最好的方式,但它可以达到您的要求。 – t4nhpt