为什么我在 UITableView 中得到空单元格?

Why did I get empty cells in UITableView?

我将 UITableView 放在 UIScrollView > View > StackView 中。

并且我像往常一样在 View Controller 中使用 numberOfRowsInSection 和 cellForRowAt 实现了 table 视图。这是我的分机。

extension OrderViewController: UITableViewDataSource, UITableViewDelegate {

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    print("DEBUG: orderItems.count - \(orderItems.count)")
    return orderItems.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: OrderCell.id, for: indexPath) as! OrderCell
    cell.configure(orderItems[indexPath.row])
    return cell
} 

}

但我的模拟器实际上显示的是空单元格。我已经检查过 orderItems 数组只有 2 个成员。

我猜这是因为自动布局或堆栈视图。在堆栈视图中,我为除 table 视图之外的每个视图都提供了高度限制,因为它必须具有动态单元格编号。

我不知道我必须改变什么。

table view's attribute

这是因为您的 tableview 具有与您的视图相关的完整高度。只需添加 viewDidLoad

yourTableView.tableFooterView = UIView()

但是,如果您希望 tableview 具有动态高度,那么就这样做;

  1. 为您的 tableview 设置高度限制
  2. 为此约束创建一个 IBOutlet

重新加载表格视图后

heightConstraint.constant = yourRowHeight * arrayCount
self.view.layoutIfNeeded()