我有一个显示原型项网格的NSCollectionView,这都是通过核心数据、接口绑定和NSValueTransformer来处理的,如果不存在实际图像,则可以在NSCollectionViewItem中显示占位符图像。
当我想从NSCollectionView中删除一个项目时,它会将它从集合视图中删除,但在它从视图中消失之前,我的占位符图像(从我的NSValueTransformer子类触发)会闪现一小段时间。
当检测到NSValueTransformer中的对象已被删除时,我找不到停止运行的方法。为什么它还在运行?
我采取的步骤是:
for (MyEntityClass * obj in [myArrayController selectedObjects]) {
[myArrayController removeObject: obj]; // This on its own works fine.
[managedObjectContext deleteObject: obj]; // This causes a flash
}如果我只是从MOC中删除对象(而不是从arrayController中删除),它会使占位符图像闪烁一微秒。
有没有办法阻止删除MOC对象导致CollectionView在从视图中删除对象之前运行NSValueTransformer?
我尝试在ArrayController removeObject和MOC deleteObject之间添加延迟,它修复了图标的闪烁,但如果用户一次性删除一组项目,则会导致核心数据字段不能为零错误。
有什么办法阻止占位符图像在从集合视图中移除对象之前闪现吗?
发布于 2017-10-18 21:22:32
解决了它。
该问题是由于将managedObjectContext保存在for循环中造成的(上面的示例代码中没有显示)。当MOC保存时,它正在刷新collectionView,而由于导致毛刺的动画,它仍然在删除对象。
https://stackoverflow.com/questions/46810082
复制相似问题