听起来听起来很奇怪,但是我不明白为什么我的tableView显示单元格。
我有应该在单元格中显示的项目数组,但是我没有在代码的任何地方运行tableView的reloadData
方法。似乎某些应用程序组件或应用程序内部的框架正在调用reloadData
方法,而我想找出是哪个?
如何完成?
答案 0 :(得分:2)
表视图在第一次添加到窗口层次结构时会加载自身。您无需显式调用reloadData
即可使表最初加载。
如果您想了解如何完成此操作,请在表视图数据源方法上设置一个断点,并调出表视图。查看调试器中的堆栈跟踪以查看事件的顺序。
答案 1 :(得分:1)
如果您的数据准备需要一些时间,并且您不希望表格视图最初显示任何数据,则可以使用以下方法:
class TableViewController: UITableViewController {
var someDataSource: [Any]!
var dataSourcePrepared = false {
didSet {
tableView.reloadData()
}
}
override func numberOfSections(in tableView: UITableView) -> Int {
guard dataSourcePrepared else { return 0 }
return someDataSource.count
}
func doSomePreparationStuff() {
// ...
// ...
someDataSource = ["Some", "Content"]
dataSourcePrepared = true
}
}
在这种情况下,我使用了Bool
变量dataSourcePrepared
,最初是false
。准备好内容后,将其设置为true
,然后重新加载表格视图。