NSTableView 加载数据,但无法重新加载

Posted

技术标签:

【中文标题】NSTableView 加载数据,但无法重新加载【英文标题】:NSTableView loads data, but cannot reload 【发布时间】:2014-03-21 03:12:03 【问题描述】:

我设置了两个 NSTableView,由一个 nstableviewdatasource 和委托填充。两个表视图在第一次加载时都会收到数据,但它们拒绝重新加载数据。 tableview 数据源和委托都连接到我在 xib 中的 tableviewcontroller 类对象。

我已经确认我的方法(将新数据设置到我用来填充表格视图的数组)实际上接收到更改的数据。此方法是我填充数据源委托方法使用的数组的唯一方法。它正在从主线程重新加载:

myArray = [classThatHoldsNewVariables.array mutableCopy]; 
[self.myTableView reloadData];

-numberOfRowsInTableView 不会被 reloadData 调用。它仅在应用启动时被调用。

我尝试在代码中手动设置数据源和委托方法,但没有成功。我尝试了很多不同的方法让 reloadData 工作,但没有任何反应。

帮助:(

编辑:

我解决了这个问题。这是一个实例问题,我从另一个类分配初始化我的 nstableviewdatasource 以重新加载数据。 Init 不加载 nib 使用的实例,因此它正在重新加载我的 tableview 的另一个实例,该实例不向用户显示。我通过在我的 tableviewcontroller 类中实现 nsnotifications 解决了这个问题。

【问题讨论】:

【参考方案1】:

听起来myTableViewnil,因此发送reloadData 方法没有任何作用。

如果是插座,请确保它已连接到 xib。如果不是,请注意UITableViewController 的表视图默认由tableView 属性引用,而不是myTableView

【讨论】:

它肯定是连接的,因为我可以通过 myTableView 收集标识符。这是一个 OS X 表格视图,而不是 UITableView。【参考方案2】:

我解决了这个问题。这是一个实例问题,我从另一个类分配初始化我的 nstableviewdatasource 以重新加载数据。 Init 不加载 nib 使用的实例,因此它正在重新加载我的 tableview 的另一个实例,该实例不向用户显示。我通过在我的 tableviewcontroller 类中实现 nsnotifications 解决了这个问题。

【讨论】:

以上是关于NSTableView 加载数据,但无法重新加载的主要内容,如果未能解决你的问题,请参考以下文章

NSTableView,NSArrayController 和仅在按键后重新加载?

如何使用 NSTableViewDiffableDataSource 通过 NSTableView 加载数据

NSTableView reloadData 外部类

懒惰地加载 NSTableView

VueJS - 重新加载页面后无法将值从 mapState 分配给数据属性

更改数组后无法在 Tableview 中重新加载数据?