我有一个显示原型项网格的NSCollectionView,这些都是通过Core Data,Interface Bindings和NSValueTransformer来处理的,如果不存在真实图像,则在NSCollectionViewItem内显示占位符图像。
当我想从NSCollectionView中删除一个项目时,它会从集合视图中删除它,但会在它从视图消失之前闪烁我的占位符图像(从我的NSValueTransformer子类触发)一秒钟。
当检测到MOC中的对象已被删除时,我无法找到阻止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之间添加一个延迟,它修复了图标的闪烁,但如果用户一次性删除一组项目,则导致Core Data字段不能为nil错误。
在占位符图像从集合视图中删除对象之前,是否有任何阻止占位符图像闪烁的想法?
答案 0 :(得分:0)
解决了它。
问题是由于在for循环中保存了managedObjectContext(上面的示例代码中未显示)。当MOC保存时,由于导致故障的动画,当它仍在移除对象时刷新了collectionView。