【问题标题】:nstableview reload not workingnstableview 重新加载不起作用
【发布时间】:2018-07-17 17:53:09
【问题描述】:

我无法重新加载我的 NSTableView。常规的 reloadData 方法不起作用:

[_tableView reloadData];

应用程序启动时 NSTableView 会正确填充。 tableview 的数据源和委托设置为 AppDelegate,并且 tableView 的引用出口也设置为 AppDelegate。

我对此很陌生 - 我不知道如何排除故障。环顾四周,我认为我在 IB 中的连接可能不正确,但是我尝试了许多不同的组合,但它们都不会让 reloadData 函数运行。我试图将 reloadData 方法添加到我知道正在运行的其他函数中,但是,它似乎只是运行 reloadData 并且什么都不做 - 没有错误或警告。

任何帮助将不胜感激 - 我更喜欢关于如何实际解决问题而不是解决方案的提示 - 我不是为了免费代码而来的。 :)

【问题讨论】:

  • 您希望 reloadData 做什么?向表中添加新对象时是否使用它?
  • 我期待 reloadData 重新加载表视图中的数据。我正在使用带有 FMDB 的 SQLite 存储,它在加载时填充表。是的,我调用 [_tableView reloadData];将项目添加到表后立即。当我退出并重新启动应用程序时,表格视图具有新条目。

标签: objective-c cocoa nstableview


【解决方案1】:

我想通了——我的数组是在我的班级的一个 init 方法中生成的。它应该是在 numberOfRowsInTableView 方法中生成的。 reloadTable 正在被调用并且正在工作,并且数组正在更改,但是,实际上并没有重新生成数组变量。

【讨论】:

    【解决方案2】:

    一些尝试:

    • 验证是否正在调用您的数据源。在数据源中放置断点,最好在以下位置:

      – numberOfRowsInTableView:

      - tableView:objectValueForTableColumn:row:

    并验证是否正在调用这些函数。

    • 通过在 -reloadData 调用处放置断点并检查数据源是否设置正确,验证 _tableView 的数据源是否设置为提供数据的类。您可以通过在调试器中运行以下命令来做到这一点:

      po[_tableView dataSource]

    • 验证您的数据源的 -numberOfRowsInTableView: 方法是否返回大于 1 的数字。这将确保表中有内容供您查看!

    【讨论】:

    • 感谢您的建议!我检查了“numberOfRowsInTableView:”和“tableView:objectValueForTableColumn:row:”是否都被NSLog语句正常调用(这是好的做法吗?),numberOfRowsInTableView中的断点显示正确的行数(大于0)并且 po [_tableView dataSource] 正在返回我认为是指向 NSMutableArray 源自的类的指针(?),这是 AppDelegate,这也是此代码运行的位置:“”。我希望这是有道理的。
    • 当然,我只是想确保 -numberOfRowsInTableView 被调用。看起来至少对你有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2012-05-31
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多