在Swift中,如果你发现reloadData()
方法被调用了,但cellForRowAt indexPath
方法没有被调用,可能是以下几个原因:
var data = ["Item 1", "Item 2", "Item 3"]
tableView.reloadData()
tableView.delegate = self
tableView.dataSource = self
UITableViewDataSource
协议中的必要方法,例如numberOfSections(in:)
和tableView(_:numberOfRowsInSection:)
。extension ViewController: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)
cell.textLabel?.text = data[indexPath.row]
return cell
}
}
tableView.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier")
或者在Storyboard中设置Identifier:
https://i.imgur.com/6yZyX4S.png
cellForRowAt indexPath
方法将不会被调用。领取专属 10元无门槛券
手把手带您无忧上云