我有撤消/重做在我的應用程序工作。如何確保「撤消」和「重做」菜單項添加了操作字符串?
我將撤消和重做菜單操作的目標設置爲我的應用程序委託來使用undoAction:和redoAction:方法實現操作。菜單項'已啓用的綁定綁定到我的撤消管理器的canUndo和canRedo屬性,並且這些屬性按預期工作。當我推入撤消堆棧時,我設置了一個操作名稱,但從未在菜單中看到它。
爲什麼我的菜單總是說撤銷或重做,而不是撤消移動到垃圾箱和重做移動到垃圾箱?菜單項通常是否被我繞過的魔法更新?我沒有使用響應者鏈,因爲我的應用程序委託不在響應者鏈中,因此從未看到這些操作。
撤消管理器是在我的應用程序委託中創建的。
更新:更改爲使用窗口的撤消管理器沒有區別。
-(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"];
}
這將解決我沒有的問題:錯誤的菜單字符串。我根本沒有得到我的行動字符串。 – 2011-03-22 14:22:41
啊。我懂了。抱歉沒有仔細閱讀。您的-undoableRemoveItemsFromListAtIndexes:方法是否被任何其他與撤消相關的方法包裝,導致撤消組? – 2011-03-22 15:41:05
不是。我不明確創建任何組,並且您看到的調用是runloop中唯一的調用。 – 2011-03-23 00:54:22