如何将数据从VC传递到Cell?

时间:2017-06-27 16:11:55

标签: ios swift uiviewcontroller cell

我想知道如何将数据从ViewController传递到单元格?

我是初学者,所以我可以监督显而易见的事情:P

我有一个家庭VC,当你按下commentButton时,你会到达CommentVC,后者持有帖子的postId。 因为我希望能够喜欢评论(它完美地运作)并且注意到用户关于他的评论被喜欢(现在不起作用)我需要将postId放在commentVC中(其中包含正确的评论) )但也在细胞中。

这是我将数据从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显示正确的变量,而Cell有“nil”作为打印输出语句。

任何想法我怎么能通过它?

4 个答案:

答案 0 :(得分:2)

您不应该通过调用自定义类初始化程序来自己实例化UITableViewCell,但您应该在UITableViewController类(或符合UITableViewContollerDataSource协议的类)中执行此操作。

使用tableView(_:cellForRowAt:)创建单元格时,将要在单元格中显示的数据传递到表格视图控制器和数据源方法(例如dequeueReusableCell(withIdentifier:))中,将数据分配给特定单元格

答案 1 :(得分:1)

您在哪里执行打印声明?通常,建议将任何数据传递到cellForRow TableView委托方法的configure(_ myId: String)中的单元格视图。在单元格类中,您可以使用{{1}}方法,将id作为要传入的parm之一。然后在该方法中打印。

答案 2 :(得分:1)

您不应传递表格单元格。由于您已将postId传递给注释视图控制器,因此您可以通过这种方式从注释视图控制器中的表视图单元访问此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
    }
}

答案 3 :(得分:0)

 $(".dropdown-content>li>a").css("color", themeColor);