我不知道我的代码有什么问题。我在互联网上进行的研究找不到解决此问题的方法。

我在同一个UIViewController中有两个UITableView。它们都有自己的UITableView类,并且从MainStoryboard正确分配了它们的标识符(多次检查,连接是否牢固)。

viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "PortfolioCell")
    barTableView.delegate = self
    barTableView.dataSource = self
    barTableView.register(UITableViewCell.self, forCellReuseIdentifier: "BarCell")


相关代码:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if tableView == self.tableView {
        return selCur.count
    } else {
        return selCur.count
    }
}

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

    if tableView == self.tableView {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "PortfolioCell", for: indexPath) as? PortfolioCell else { return UITableViewCell() }

                let noVal = selCur.count[indexPath.row].rank ?? 0
                let nameVal = selCur.count[indexPath.row].name ?? "N/A"

                cell.configureCell(no: noVal, name: nameVal)
            }
        }
        return cell

    } else {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "BarCell", for: indexPath) as? BarCell else { return UITableViewCell() }
                let noVal = selectedCurrencies[indexPath.row].rank ?? 0
                let nameVal = selectedCurrencies[indexPath.row].name ?? "N/A"

                cell.configureCell(no: noVal, name: nameVal)
            }
        }
        return cell
    }
}


我猜想,cellForRowAt方法返回常规UITableViewCell而不是自定义“ PortfolioCell”或“ BarCell”。我也尝试了tableView.tag方法,并得到了相同的结果。

先感谢您。

最佳答案

您必须正确注册每个单元格。

tableView.register(PortfolioCell.self, forCellReuseIdentifier: "PortfolioCell")


或者如果您的单元格具有.xib

tableView.register(UINib(nibName: "PortfolioCell", bundle: nil),
                   forCellReuseIdentifier: "PortfolioCell")


如果单元格位于情节提要中,则您甚至无需注册。

关于ios - 如何使用Swift在单个UIViewController中实现多个UITableView?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47582820/

10-09 02:25