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

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

如果我不使用runModalForWindow:启动窗口,而只是使用makeKeyAndOrderFront:,则一切都会按预期进行。

有人遇到过吗?

凯文

最佳答案

您是否有为您的应用程序使用可可应用工具包的机会?不知道为什么它不会在您的主窗口上执行此操作,而仅在叠加层上执行此操作。但这可能是正确的方向。

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


  执行撤消操作时,NSUndoManager
  保存还原的操作,以便
  您可以重做撤消。如果用于
  基于可可应用工具包
  应用程序,NSUndoManager将所有分组
  一个周期内的操作
  运行循环,以便执行
  撤消还原发生的所有更改
  在周期中。

10-07 18:36