Objective c NSTableView-由FSEvents触发时setDataSource不工作
下面是我得到的:Objective c NSTableView-由FSEvents触发时setDataSource不工作,objective-c,cocoa,macos,fsevents,Objective C,Cocoa,Macos,Fsevents,下面是我得到的: 具有NSMutableArray数据源的NSTableView FSEvents监视包含包含表视图数据的文件的文件夹(用于Objective-C抽象) FSEvents触发与UI中的重载按钮相同的功能。此函数通过setDataSource:根据所述文件的内容,使用新数据源刷新表视图 下面是发生的情况: 如果对文件进行更改,将触发FSEvent并调用refresh方法 表视图应该接受的数组确实包含触发FSEvent的更改 setDataSource:使用正确的数据源发送到N
- 具有NSMutableArray数据源的NSTableView
- FSEvents监视包含包含表视图数据的文件的文件夹(用于Objective-C抽象)
- FSEvents触发与UI中的重载按钮相同的功能。此函数通过
根据所述文件的内容,使用新数据源刷新表视图setDataSource:
- 如果对文件进行更改,将触发FSEvent并调用refresh方法
- 表视图应该接受的数组确实包含触发FSEvent的更改
使用正确的数据源发送到NSTableViewsetDataSource:
- 更改不会显示在表视图中李>
- 如果我点击刷新按钮,它会触发与FSEvent完全相同的方法,那么表视图将使用新数据更新
nsapplicationidbecomeactivityfication
)替换FSEvent,但同样的情况也发生了
有人知道为什么会这样吗
编辑:为了澄清,我的问题的jist是:为什么我的NSTableView在被按钮按下触发时会按应有的方式重新加载,而不是在被FSEvent或NSNotification触发时重新加载
编辑:多亏了,我发现事实上,当事件触发时,我的所有UI引用都指向0x0,但当按钮单击触发时,它们都有有效的地址。这些对象都是在IB中声明的,所以在我的代码中没有对它们进行实例化或分配。所以我现在的问题是:我能做些什么来阻止这些指针指向nil?在第二次运行循环时,您是否尝试过从FSEvent调用您的方法
[myObject performSelector:@selector(reloadAction:) withObject:nil afterDelay:0.0];
在运行循环的第二个过程中,您是否尝试过从FSEvent调用您的方法
[myObject performSelector:@selector(reloadAction:) withObject:nil afterDelay:0.0];
当我们有新数据要添加/删除到表中时,我们在NSTableView上调用reloadData 这可能有助于强制NSTableView重新绘制
我不确定这是否是你要问的。你问题的措辞有些混乱,你陈述了一系列事件,但从来都不是一个真正的问题 当我们有新数据要添加/删除到表中时,我们在NSTableView上调用重新加载数据 这可能有助于强制NSTableView重新绘制
我不确定这是否是你要问的。你问题的措辞有些混乱,你陈述了一系列事件,但从来都不是一个真正的问题 您将
NSArray
直接设置为表视图的数据源
NSTableView
不是这样工作的。数据源必须是符合的对象<代码>NSArray没有。您自己编写数据源;它可能与您当前调用的setDataSource:
对象相同
另一种方法是使用绑定。您正在将
NSArray
直接设置为表视图的数据源
NSTableView
不是这样工作的。数据源必须是符合的对象<代码>NSArray没有。您自己编写数据源;它可能与您当前调用的setDataSource:
对象相同
另一种方法是使用绑定。刷新方法范围内对表视图的引用是否无效 即,您确定您没有调用不会产生任何错误的[nil reloadData]吗?
如果在从NIB唤醒之前或在某些其他情况下对表视图进行了设置,则刷新代码中对表视图的引用可能为零。刷新方法范围内对表视图的引用是否无效 即,您确定您没有调用不会产生任何错误的[nil reloadData]吗?
如果您在从NIB唤醒之前或在某些其他情况下设置了对表视图的引用,则刷新代码中的表视图引用可能为零。听起来像是注册事件/通知时,您正在传递控制器类的另一个实例。听起来像是注册事件/通知时,您正在传入控制器类的另一个实例。我在NSArray上有一个类别,因此它符合
NSTableDataSource
协议的必要方法。我在NSArray上有一个类别,因此它符合NSTableDataSource
协议的必要方法。这就是我要问的。不幸的是,重新加载数据会产生相同的结果。这就是我要问的。不幸的是,重新加载数据会产生相同的结果。你是对的。从事件触发时,所有UI对象都为零,但从按钮(和awakeFromNib)触发时具有正确的地址。有意思……你说得对。从事件触发时,所有UI对象都为零,但从按钮(和awakeFromNib)触发时具有正确的地址。有趣的是…这并不是问题所在,但我会把这个标记为正确的,因为它为我指明了正确的方向。谢谢这并不完全是问题所在,但我会将此标记为正确,因为它为我指明了正确的方向。谢谢