为什么我的 TableViewCell 不显示其他数据

Why does my TableViewCell doesn't show other data

我打算使用 TableViewCell 将我的 Firestore 数据库中的数据显示到我的应用程序中。它应该显示 bookTitle、bookAuthor 和 bookSummary,但 bookAuthor 没有显示。下面是我的代码。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
        cell.accessoryType = .disclosureIndicator
        cell.textLabel?.text = books[indexPath.row].bookTitle
        cell.textLabel?.font = .systemFont(ofSize: 20, weight: .medium)
        cell.detailTextLabel?.text = books[indexPath.row].bookAuthor
        cell.detailTextLabel?.text = books[indexPath.row].bookSummary
        return cell
    }
    
    
    func setupTableView() {
        view.addSubview(tableView)
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
        tableView.allowsSelection = true
        tableView.isUserInteractionEnabled = true
        tableView.translatesAutoresizingMaskIntoConstraints = false
        tableView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        tableView.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor).isActive = true
        tableView.leftAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor).isActive = true
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return books.count
    }

您在此处将 相同的 标签设置为 bookAuthorbookSummary

cell.detailTextLabel?.text = books[indexPath.row].bookAuthor
cell.detailTextLabel?.text = books[indexPath.row].bookSummary

因此,它被设置为 bookAuthor,然后立即被 bookSummary 覆盖。

您可以 create/use 为其中一个字段添加另一个标签,或连接该单个标签的字符串:

cell.detailTextLabel?.text = "\(books[indexPath.row].bookAuthor ?? "") - \(books[indexPath.row].bookSummary ?? "")" 

如你所用 textLabel 和 detailTextLabel: 用于给标签和副标题。您不能使用 detailTextLabel 两次。所以它用 bookSummary 覆盖了你的 bookAuthor。

请尽量这样写:-

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
    cell.accessoryType = .disclosureIndicator
    cell.textLabel?.text = books[indexPath.row].bookTitle
    cell.textLabel?.font = .systemFont(ofSize: 20, weight: .medium)
    cell.detailTextLabel?.text = books[indexPath.row].bookAuthor + "\n" + books[indexPath.row].bookSummary
    return cell
}