繁体   English   中英

谁在为UITableView调用reloadData方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM