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】:听起来myTableView
是nil
,因此发送reloadData
方法没有任何作用。
如果是插座,请确保它已连接到 xib。如果不是,请注意UITableViewController
的表视图默认由tableView
属性引用,而不是myTableView
。
【讨论】:
它肯定是连接的,因为我可以通过 myTableView 收集标识符。这是一个 OS X 表格视图,而不是 UITableView。【参考方案2】:我解决了这个问题。这是一个实例问题,我从另一个类分配初始化我的 nstableviewdatasource 以重新加载数据。 Init 不加载 nib 使用的实例,因此它正在重新加载我的 tableview 的另一个实例,该实例不向用户显示。我通过在我的 tableviewcontroller 类中实现 nsnotifications 解决了这个问题。
【讨论】:
以上是关于NSTableView 加载数据,但无法重新加载的主要内容,如果未能解决你的问题,请参考以下文章
NSTableView,NSArrayController 和仅在按键后重新加载?
如何使用 NSTableViewDiffableDataSource 通过 NSTableView 加载数据