有两个表格单元格询问并回复

时间:2018-01-02 20:39:16

标签: ios swift uitableview cells

我正在尝试创建一个包含问题和回复的表格视图,但回复嵌套在问题的稍后。

我从firebase调用数据,但不知道如何在表视图中显示该信息。我有2个单元格设置了我想要的外观,但只能填充问题或答案。

我还在学习并且代码是错误的,因为我知道第二部分在返回后不会被调用,但它显示了我的2个单元格,如果我注释掉其中一个,那么它显示另一个没有问题。

任何人都可以为我阐明这一点,或者请我指出正确的方向。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let post = postsQuestion[indexPath.row]

    if let cell = tableView.dequeueReusableCell(withIdentifier: "QuestionsCell") as? QuestionsCell {

        if let img = MainInfoVC.imageCache.object(forKey: post.userCommentImage as NSString) {
            cell.configurePost(post: post, img: (img ))
            return cell
        }else {
            cell.configurePost(post: post)
            return cell
        }
    }else {
        return QuestionsCell()
    }

    let postRs = postsReplys[indexPath.row]

    if let cell = tableView.dequeueReusableCell(withIdentifier: "ReplyCell") as? ReplyCell {

        if let img = MainInfoVC.imageCache.object(forKey: post.userCommentImage as NSString) {
            cell.configureReplyPost(post: postRs, img: (img ))
            return cell
        }else {
            cell.configureReplyPost(post: postRs)
            return cell
        }
    }else {
        return QuestionsCell()
    }
}

以下是我保存到firebase的数据。

Firebase Data

和我调用数据的代码。

let postReg = DataService.ds.REF_POSTS
    postReg.child("\(subStr!)").child("question").queryOrdered(byChild: "date").observe(.value, with: { snapshot in

        self.postsQuestion = []

        if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
            for snap in snapshot {

                let postDictQ = snap.value as? Dictionary<String, AnyObject>
                let keyQ = snap.key
                let postQ = Post(postKey: keyQ, postData: postDictQ!)
                self.postsQuestion.append(postQ)
            }
        }
        self.postsQuestion.sort(by: {$0.date > $1.date})
        self.tableView.reloadData()
    })



    let postReply = DataService.ds.REF_POSTS.child("\(subStr!)").child("question")


    postReply.queryOrdered(byChild: "date").observe(.value, with: { snapshot in

        if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
            for snap in snapshot {

                if snap.hasChild("replies") {
                    let snapID = snap.key

                    let refToReply = DataService.ds.REF_POSTS.child("\(subStr!)").child("question").child(snapID).child("replies")

            refToReply.queryOrdered(byChild: "date").observe(.value, with: { snapshot in

                let postDictR = snap.value as? Dictionary<String, AnyObject>
                let keyR = snap.key
                let postR = Post(postKey: keyR, postData: postDictR!)
                self.posts.append(postR)
                print("Tony: Snapshot Reply\(snapshot)")
            })
                }else {
                    print("Tony: No Replies")
            }
        self.posts.sort(by: {$0.date > $1.date})
        self.tableView.reloadData()
            }
        }
    })

这就是我希望它在视图中查看的方式。

View

0 个答案:

没有答案