我有一个简单的Core Data应用程序,该应用程序在主窗口中显示实体列表。为了创建或添加新实体,我使用了具有独立管理对象上下文的第二个模式窗口,因此可以撤消/重做更改,而不会干扰主管理对象上下文。
使用runModalForWindow:
启动编辑窗口。如果在此模式窗口中进行了一系列离散更改,则执行一次撤消操作将撤消所有更改。我尝试将NSUndoManager
的运行循环模式(从第二个托管对象上下文中获得)设置为包含NSModalPanelRunLoopMode
,但这似乎没有任何区别。
如果我不使用runModalForWindow:
启动窗口,而只是使用makeKeyAndOrderFront:
,则一切都会按预期进行。
有人遇到过吗?
凯文
最佳答案
您是否有为您的应用程序使用可可应用工具包的机会?不知道为什么它不会在您的主窗口上执行此操作,而仅在叠加层上执行此操作。但这可能是正确的方向。
以下引用来自Mac Dev Center, NSUndoManager Class Reference:
执行撤消操作时,NSUndoManager
保存还原的操作,以便
您可以重做撤消。如果用于
基于可可应用工具包
应用程序,NSUndoManager将所有分组
一个周期内的操作
运行循环,以便执行
撤消还原发生的所有更改
在周期中。