我一直在为我的可可应用程序(OS 10.9)提供撤消功能,并且我已经成功实现了使用NSUndoManager的撤消功能实例。但是,我无法在编辑菜单下取消“撤消”文本!我正在使用setActionName方法,详见Apple的文档。我的相关方法:NSUndoManager setActionName:不更改菜单文本
- (void)FinishEditingName {
[[self UndoManager] registerUndoWithTarget:[self TestObject] selector:@selector(setName:) object:[NSString stringWithFormat:@"Testing Undo!"]];
[[self UndoManager] setActionName:@"Edit Name"];
[[self TestObject] setName:[NSString stringWithFormat:@"New Name"]];
NSLog([NSString stringWithFormat:@"%@",[[self UndoManager] undoActionName]]);
}
同样,撤销完美的作品,即[[self TestObject] Name]
设置“新名称”上调用此方法,选择编辑 - >撤消将此改为“测试撤消!”。但是,“编辑”菜单的第一个条目应该更改为“撤消编辑名称”文本,但不是,它只是保留为“撤消”。正如你所看到的,我已经确认文本应该通过吐出NSLog(),它工作得很好(即它提供“编辑名称”)更改。我在这里错过了什么?我是否需要以某种方式将NSUndoManager链接到NSMenu?如果是这样,这是从文档中丢失!
在此先感谢!
此代码在什么对象?这个方法从哪里调用? –
在这种情况下,'self'是NSWindowController的自定义子类。该方法通过编辑窗口中的NSTextField来调用。 –
WindowController的undoManager如何设置? –