UITableView不显示任何单元格

时间:2018-02-28 19:10:58

标签: ios swift uitableview

我有一个ViewController,其中UITableView(和一种UITableViewCell)通过Interface Builder设置。我把它连接到一些IBOutlets

@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.allowsSelection = false
    tableView.dataSource = self
    tableView.register(CommentTableViewCell.self, forCellReuseIdentifier: CommentTableViewCell.identifier)
    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 150
}

然后我实现了以下方法:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    print(self.comments.count)
    return self.comments.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    print(self.comments[indexPath.row], indexPath.row)
    let cell = tableView.dequeueReusableCell(withIdentifier: CommentTableViewCell.identifier, for: indexPath) as! CommentTableViewCell
    cell.comment = self.comments[indexPath.row]
    print(cell)
    return cell

}

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    let comment = comments[indexPath.row]
    return comment.user.isMe ? .delete : .none
}


func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    guard editingStyle == .delete, !isDeleting else {
        return
    }

    isDeleting = true

    let comment = self.comments[indexPath.row]
    comment.delete() { result in
        self.isDeleting = false

        switch result {
        case .success:
            self.comments.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .automatic)
        case .failure:
            self.displayError("Could not delete comment")
        }
    }
}

现在这看起来很简单(所有用于调试的打印语句),但是,tableView实际上不会显示任何单元格。调用tableView.reloadData()后,numberOfRowsInSection方法返回2. cellForRowAt也会打印2 CommentTableViewCell

但不显示这些内容。经过一些测试后,我发现显示了tableview本身。

现在为什么会发生这种情况?我不认为我错过了什么。有没有人有这方面的经验?

谢谢: - )

1 个答案:

答案 0 :(得分:0)

假设CommentTableViewCell具有此comment标签,请确保正确设置标签的垂直约束。问题似乎是关于不正确的细胞高度。

根据Reinier Melian的建议,尝试固定的高度,看看是否有效。 如果没有,请暂时将单元格更改为UITableViewCell,然后设置标题标签并使其正常工作。这样,我们可以更好地隔离问题。