我正在为我的应用实现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? 要么 我怎样才能使它发挥作用?
答案 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
}