Я хочу позвонить tableView.reloadData()
и быть уверенным, что после этой таблицы будут отображены строки.Проблема в том, что этого не происходит, когда я устанавливаю источник данных программно до этого.Пример:
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.reloadData()
print("after reloadData")
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("cellForRowAt")
return UITableViewCell()
}
}
Вывод: 1. print ("after reloadData") 2. print ("cellForRowAt")
Я ожидаю, что сначала будет напечатан "cellForRowAt".Почему это происходит?
Обновление: это глупо, но я думал, что reloadData () был синхронным.Что мне помогло: self.tableView.layoutIfNeeded () Спасибо и спасибо этому парню .