gpt4 book ai didi

objective-c - 无法在 cocoa 核心数据应用程序中进行撤消和重做

转载 作者:行者123 更新时间:2023-12-03 17:10:12 24 4
gpt4 key购买 nike

我在核心数据 cocoa 应用程序中实现撤消和重做时遇到问题。这是我就同一主题提出的第二个问题( you can read my first question here ),即使我对第一个问题得到了可靠的建议,我仍然无法使撤消和重做工作。

无论如何......这是我当前的代码:

以下是 MainWindowController.h 文件中的相关代码:

#import <Cocoa/Cocoa.h>
#import "AppDelegate.h"

@property (nonatomic,strong) NSManagedObjectContext *mObjContext;
@property AppDelegate *appDelegate;

以下是 MainWindowController.m 文件中的代码:

#import "MainWindowController.h"
@interface MainWindowController () <NSWindowDelegate>

@end

@implementation MainWindowController

- (void)windowDidLoad {
self.appDelegate = (AppDelegate*)[[NSApplication sharedApplication] delegate];
self.mObjContext = self.appDelegate.managedObjectContext;
[[self window]setDelegate:self];
[self windowWillReturnUndoManager:self.window];
}

- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window
{
return [[self document] undoManager];
}

@end

我的窗口在连接检查器中有以下 socket :委托(delegate):文件所有者

菜单:主菜单

每当我在 nstableviews 中对记录进行更改时,都会记录更改,但撤消和重做菜单项保持灰色。我在 windowWillReturnUndoManager 中放置了断点,但我看不到任何 undoManager 返回那里...谁能告诉我我做错了什么?

最佳答案

您将返回文档的 undoManager(可能为零),而不是托管对象上下文的 undoManager。将 windowWillReturnUndoManager 更改为

- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window
{
return self.mObjContext.undoManager;
}

关于objective-c - 无法在 cocoa 核心数据应用程序中进行撤消和重做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com