2017-06-27 41 views
0

我想知道如何將數據從ViewController傳遞給單元格?如何將數據從VC傳遞到單元?

我是初學者,所以我可以監督顯而易見的:P

我有一個家VC,當你按下一個commentButton你能持有的帖子的帖子ID CommentVC。 正如我想能夠喜歡評論(這是完美的作品),並注意到用戶有關他的評論被喜歡(現在不工作),我需要有postId不僅在評論VC(它擁有正確的一個),但也在小區中。

這是我從HomeVc傳遞數據到CommentVC

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "CommentSegue" { 
     let commentVC = segue.destination as! CommentViewController 
     let commentCell = CommentTableViewCell() 
     let postId = sender as! String 
     commentCell.postId = postId 
     commentVC.postId = postId 
    } 
} 

當我打印出CommentVc和CommentCell兩個變量的代碼,只有CommentVc顯示正確的一個,而所述細胞具有「無」作爲打印出來的聲明。

任何想法如何通過它?

回答

1

您不應該傳遞表格單元格。既然你已經通過了帖子ID,以您的評論視圖控制器,你可以從一個表視圖小區接入這個ID在您的評論的視圖控制器這樣

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "EditorFontCell") as! EditorFontCell 

    print(self.postId) 
    //do what you want with postId with the current cell object here 

    return cell 
} 

現在刪除單元格SEGUE

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "CommentSegue" { 
     let commentVC = segue.destination as! CommentViewController 
     let postId = sender as! String 
     commentVC.postId = postId 
    } 
} 
+0

感謝它現在正在工作:) –

+0

@Zash__ np不要忘記標記爲正確的答案。快樂編碼:) –

+0

我已經做到了:) –

2

您不應通過調用您的自定義類初始化程序實例化自己的UITableViewCell,但應該在UITableViewController類(或符合UITableViewContollerDataSource協議的類)中執行此操作。

傳給你想在你的細胞中,展現給您的表視圖控制器和數據源的方法(例如,tableView(_:cellForRowAt:))的數據使用dequeueReusableCell(withIdentifier:)的數據分配給特定的細胞創建的細胞時。

+0

感謝它爲我工作! :) –

1

你在哪裏執行打印輸出聲明?通常,建議將任何數據傳遞給TableView委託方法的cellForRow中的單元視圖。在單元類中,可以使用configure(_ myId: String)方法,將id作爲要傳入的一個參數,然後在該方法中打印它。

+0

感謝您的幫助,它爲我工作:) –

0
//In cell table cell class create a variable to hold the data. Here I made postId as String variable. 

class EditorFontCell: UITableViewCell{ 
    var postId: String! // postId may be other type 

    override func awakeFromNib() { 
      super.awakeFromNib() 
      // Initialization code 
     } 

    } 


// in this method you create an object i.e. cell, of type EditorFontCell 
// and you can access that postId by this tableCell object. You can simple assign a value to as shown below. 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "EditorFontCell") as! EditorFontCell 

     cell.postId = "String data" 
     return cell 
    } 
+0

把它的一些文字和解釋。拋出一個沒有解釋的代碼對OP來說沒有多大的幫助 –

相關問題