2015-10-18 91 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