ReloadData 不会触发 tableView:numberOfRowsInSection:

Posted

技术标签:

【中文标题】ReloadData 不会触发 tableView:numberOfRowsInSection:【英文标题】:ReloadData doesn't fire tableView:numberOfRowsInSection: 【发布时间】:2012-07-31 03:50:38 【问题描述】:

我只是遇到一个问题,我调用 UITableView reloadData 方法,但什么也没发生。没有调用 tableView:numberOfRowsInSection。

场景是:

表在视图 A(有 UITableView)中工作正常,然后视图 B 显示和隐藏,在此步骤之后,UITableView reloadData 不再工作。我确定在主 UI 线程中调用了 reloadData 并且数据源已更改。也没有 IBOutlet 连接问题。

【问题讨论】:

您的问题再模糊不过了。发布一些代码或解释你所做的事情。 同意,如果不查看源代码,我们无法诊断出问题所在。 我的猜测是,如果视图 B 在视图 A 的上方(具有 UITableView),那么 reloadData 将不起作用,只需尝试从其父视图中删除视图 B。 我试图在视图 B viewDidDisappear 之后重新加载数据,仍然没有工作 我猜这与 UITableView 的可见性有关,但奇怪的是在视图 B 关闭后仍然无法正常工作。 【参考方案1】:

尝试在 viewWillAppear 中调用 reloadData。

【讨论】:

为什么要放在viewWillAppear中? 如果您的第一个视图(视图 A)从未卸载,则返回时不会调用 viewDidLoad,但会调用 viewWillAppear。 那是假设你在 viewDidLoad 中有 reloadData 开始。 另外,请确保在调用 reloadData 之前从数据源重新获取数据,否则即使工作正常,reloadData 也不会显示任何新内容。【参考方案2】:

在 [tableView reloadData] 上设置断点;检查您的 tableView 对象是否不为零。

【讨论】:

以上是关于ReloadData 不会触发 tableView:numberOfRowsInSection:的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Core Data container.performBackgroundTask() 之后不触发 tableView.reloadData()

reloadData() 不会更新父 TableView

为啥重新加载 tableView 不能快速工作?

循环中的 tableView reloadData 不会在每次通过时绘制单元格

在主线程上调用 tableView.reloadData 后 UITableView 不刷新

[tableView reloadData] 和 runloop