gpt4 book ai didi

objective-c - NSTableView -setDataSource 在由 FSEvents 触发时不起作用

转载 作者:行者123 更新时间:2023-12-03 17:29:56 26 4
gpt4 key购买 nike

这就是我得到的:

  • 带有 NSMutableArray 数据源的 NSTableView
  • FSEvents 监视包含 TableView 数据的文件的文件夹(使用 SCEvents 实现 Objective-C 抽象优点)
  • FSEvents 触发的功能与 UI 中的重新加载按钮所执行的功能相同。此函数通过 setDataSource: 根据所述文件的内容使用新数据源刷新 TableView 。

事情是这样的:

  • 如果我对文件进行更改,则会触发 FSEvent 并调用刷新方法。
  • TableView 应接受的数组确实包含触发 FSEvent 的更改。
  • setDataSource: 使用正确的数据源发送到 NSTableView。
  • 更改不会出现在表格 View 中!

但是然后:

  • 如果我点击刷新按钮(这会触发与 FSEvent 完全相同的方法), TableView 就会使用新数据进行更新。

我还尝试用 NSNotification (NSApplicationDidBecomeActiveNotification) 替换 FSEvent,但发生了同样的事情。

有人知道为什么会发生这种情况吗?

编辑:为了澄清起见,我的问题的要点是:为什么我的 NSTableView 在按下按钮触发时会重新加载,而不是在由 FSEvent 或 NSNotification 触发时重新加载?

编辑:感谢 diciu ,我发现实际上我的所有 UI 引用在由事件触发时都指向 0x0,但在由按钮单击触发时具有有效地址。这些对象都是在 IB 中声明的,因此我的代码中没有对它们进行实例化或分配。所以我现在的问题是:我该怎么做才能阻止这些指针指向 nil?

最佳答案

当我们有新数据要添加/删除到表中时,我们会在 NSTableView 上调用 reloadData

这可能有助于强制 NSTableView 重绘。

我不太确定这是否是您所要求的。你的问题的措辞有点令人困惑,你陈述了一系列事件,但从来都不是一个真正的问题。

关于objective-c - NSTableView -setDataSource 在由 FSEvents 触发时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com