[英]Who is calling reloadData method for UITableView
听起来很奇怪,但我不明白为什么tableView显示单元格。
我有应该在单元格中显示的项目数组,但是我没有在代码的任何地方运行tableView的reloadData
方法。 似乎某些应用程序组件或应用程序内部的框架正在调用reloadData
方法,而我想找出哪个?
怎么做?
表视图在第一次添加到窗口层次结构时会加载自身。 您不需要显式调用reloadData
使表最初加载自身。
如果要查看实际完成情况,请在表视图数据源方法上设置一个断点,并调出表视图。 查看调试器中的堆栈跟踪以查看事件的顺序。
如果您的数据准备需要一些时间,并且您不希望表视图最初显示任何数据,则可以使用以下方法:
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
并重新加载表格视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.