最近,iOS 开发中可能发生了一些变化。现在我们必须在 SceneDelegate 中设置我们的窗口和根 VC,而不是 AppDelegate 的 didFinishLauching。(请不要使用故事板!)好吧,这不是那么困难,也没有那么不同。但现在看来我现在什至无法将我的 UITableViewDatasource 上的单元格出列。就这么简单!我又做错了什么?我将行数设置为 80 只是为了确保会出现一些东西,但那里没有运气。我在我的 ViewController(嵌入在 navigationController 中)中获得了 systemTeal 彩色 tableView,就是这样。有任何想法吗?
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let cellId = "cellId"
lazy var tableView: UITableView = {
let tb = UITableView()
tb.translatesAutoresizingMaskIntoConstraints = false
return tb
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemPink
setupTableView()
}
fileprivate func setupTableView() {
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
tableView.backgroundColor = .systemTeal
view.addSubview(tableView)
NSLayoutConstraint.activate([
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
tableView.widthAnchor.constraint(equalTo: view.widthAnchor),
tableView.heightAnchor.constraint(equalTo: view.heightAnchor)
])
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 80 }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: cellId)!
cell.backgroundColor = .systemRed
cell.textLabel?.text = "cell: \(indexPath.row)"
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 50 }
func numberOfSections(in tableView: UITableView) -> Int { 1 }
}