NSUndoManager和runModalForWindow:

时间:2009-11-13 03:55:49

标签: objective-c cocoa

我有一个简单的Core Data应用程序,它在主窗口中显示实体列表。为了创建或添加新实体,我使用第二个模态窗口和一个单独的托管对象上下文,这样可以撤消/重做更改,而不会干扰主要的托管对象上下文。

使用runModalForWindow:启动编辑窗口。如果我在此模态窗口中进行一系列离散更改,则执行单个撤消会导致撤消所有更改。我尝试将NSUndoManager(从第二个托管对象上下文获取)的运行循环模式设置为包含NSModalPanelRunLoopMode,但这似乎没有任何区别。

如果我不使用runModalForWindow:启动窗口并只使用makeKeyAndOrderFront:,则一切都按预期工作。

有没有人遇到过这个?

凯文

1 个答案:

答案 0 :(得分:0)

您是否偶然使用Cocoa Application Kit进行应用?不知道为什么它不会在你的主窗口上,而只是在覆盖层上这样做..但这可能是在正确的方向..

以下引用来自Mac Dev Center, NSUndoManager Class Reference

  

执行撤消NSUndoManager时   保存恢复的操作以便   你可以重做一下。如果用于   基于Cocoa Application Kit   应用程序,NSUndoManager组全部   单个周期内的操作   运行循环,以便执行   undo将还原所有发生的更改   在周期中。