我有一个由多个图层(托管对象)组成的图像,每个图层都由一个视图表示。当我清除这些层时,我从前到后删除它们,期望撤消以相反的顺序从后到前恢复它们,因此也从后到前创建它们的视图,给我正确的顺序。但是,恢复层(托管对象)的顺序似乎是随机的。有没有办法确保以与删除图层相反的顺序重新插入图层(因为撤消通常是一个堆栈,这是我所期望的)。
请注意,所有图层删除都发生在单个撤消分组中,所以它不像我多次点击撤消按钮,它都在一个撤消调用中。
[self.managedObjectContext.undoManager beginUndoGrouping];
//remove all layers but the bg
NSMutableOrderedSet * layers = self.interactionView.currentSketchPage.layersSet;
for (int i = layers.count-1; i >= 1; i--) {
[self.managedObjectContext deleteObject:[layers objectAtIndex:i]];
}
[self.managedObjectContext.undoManager endUndoGrouping];
请注意,删除其中一些层可能会导致其他对象从级联中删除,所以这可能也会影响它吗?
编辑:要注意切换 for 循环的顺序不会改变图层恢复的顺序。