如何让AppDelegate成为NSWindowDelegate?

时间:2015-05-23 16:50:27

标签: objective-c macos cocoa

我终于在OSX上尝试了故事板,并且对生成的项目的结构感到困惑。 基本上,我想知道windowWillReturnUndoManager应该如何作为应用程序委托的一部分工作。

  1. 我使用Storyboard,Core Data创建了一个Cocoa应用程序,但没有 文档。
  2. 生成的AppDelegate包含- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window
  3. 的实现
  4. 然而,AppDelegate未定义为NSWindowDelegate
  5. 永远不会调用上述方法。
  6. 尝试将AppDelegate设置为窗口委托会给我带来一些问题。

    1. Application Scene具有AppDelegate对象和Window 控制器场景具有窗口,因此IB连接不起作用。
    2. 在应用程序的mainWindow可用之前调用
    3. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    4. 我可以通过定义mainWindow ivar并使用像......这样的代码来实现它。

      - (void)applicationDidUpdate:(NSNotification *)aNotification {
          if (!mainWindow) {
              NSWindow *appWindow = [[NSApplication sharedApplication] mainWindow];
              if (appWindow) {
                  mainWindow = appWindow;
                  [mainWindow setDelegate:self];
              }
          }
      }
      

      ...它将委托设置为第四时间。对我来说,这似乎是一个荒谬的黑客。

      这里的预期策略是什么?

0 个答案:

没有答案