【发布时间】:2011-03-22 04:38:14
【问题描述】:
我的应用中有撤消/重做功能。
我将撤消和重做菜单操作的目标设置为我的应用委托,以使用 undoAction: 和 redoAction: 方法实现这些操作。菜单项的启用绑定绑定到我的撤消管理器的 canUndo 和 canRedo 属性,并且这些按预期工作。我在推送到撤消堆栈时设置了一个操作名称,但从未在菜单中看到它。
为什么我的菜单总是显示 Undo 或 Redo,而不是 Undo Move to Trash 和 Redo Move to Trash ?菜单项通常会被我绕过的一些魔法更新吗?我没有使用响应者链,因为我的应用委托不在响应者链中,因此永远看不到操作。
撤消管理器是在我的应用委托中创建的。
更新:更改为使用窗口的撤消管理器没有任何区别。
-(void)undoableRemoveItemsFromListAtIndexes:(NSIndexSet*)itemIndexes;
{
NSArray *removedItems = [[self.listController arrangedObjects] objectsAtIndexes:itemIndexes];
[[self.undoManager prepareWithInvocationTarget:self] undoableAddItems:removedItems toListAtIndexes:itemIndexes];
[self removeItemsFromListAtIndexes:itemIndexes];
[self.undoManager setActionName:@"Move to Trash"];
}
【问题讨论】: