【问题标题】:call function before tableView:viewForHeaderInSection: is called - Swift在调用 tableView:viewForHeaderInSection: 之前调用函数 - Swift
【发布时间】:2016-08-29 17:15:10
【问题描述】:

我在 ViewController 中设置了一个 tableView。此表格视图有 1 个部分,2 个原型单元格:一个用于返回部分中的行数,另一个用于显示自定义标题。

  • viewDidAppear() 中,调用self.loadData() 函数从NSUserDefaults 中检索数据。此数据将在tableView:viewForHeaderInSection: 中用于填充标题部分中的标签。 问题是tableView:viewForHeaderInSection: 在调用viewDidAppear() 之前自动调用,因此标题部分中的标签没有填充从NSUserDefaults 检索的数据。 如何在调用tableView:viewForHeaderInSection: 之前调用self.loadData()

【问题讨论】:

  • 使用 viewWillAppear
  • @Shades 如果我使用 viewWillAppear,.Checkmark 附件不再显示在之前选择的行上。我根据 NSUserDefaults 中记录的 indexPath 分配了一个复选标记。
  • 正如@matt 所说,在加载数据后调用 tableView.reloadData() 以便它填充您检索到的所有内容。
  • 如果我在 viewDidAppear 中使用 tableView.reloadData() 它可以工作,我假设复选标记无法在 viewWillAppear 中加载,因为视图尚未显示..

标签: swift uitableview


【解决方案1】:

这是一个常见问题——表格视图首次出现时数据尚未准备好。在给定当前状态的情况下,只需正确回答表视图数据源和委托的问题;例如,如果您没有数据,请说没有部分。如果您确实有数据,请在表格视图上致电reloadData 以再次提出问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2017-05-13
    • 2017-09-08
    • 1970-01-01
    • 2015-10-19
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多