2017-06-27 39 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来说没有多大的帮助 –

相关问题