【问题标题】:Multiple windows per document (Cocoa document based app)每个文档有多个窗口(基于 Cocoa 文档的应用程序)
【发布时间】:2014-08-19 12:01:47
【问题描述】:

假设我创建了一个新的 Cocoa 应用程序并在创建项目时使用Document-based application。它将有一个窗口,来自NSDocument 子类的窗口。我怎样才能使两个(或更多)窗口属于每个文档?

我创建了一个带有 .xib 文件的 NSWindowController 子类,并在其中创建了接口。我怎样才能显示这个窗口? NSWindowController 子类和NSDocument 子类之间的通信是如何工作的?

(我使用核心数据,所以它实际上是一个NSPersistentDocument 子类,但我认为这对于这个特定问题并不重要。)

【问题讨论】:

    标签: cocoa nsdocument nswindowcontroller


    【解决方案1】:

    在你的 NSDocument 中

    //Lazy instantiation of window controller
    - (AdditionalWindowController *)additionalWC {
        if (!_additionalWC) {
            _additionalWC = [[AdditionalWindowController alloc] initWithWindowNibName:@"AdditionalWindow"];
        }
        return _additionalWC;
    }
    
    - (IBAction)openAdditionalWindow:(id)sender {
      self.additionalWC.document = self;
      [self.additionalWC showWindow:self];
    }
    

    - (IBAction)openAdditionalWindow:(id)sender {
      //addWindowController ignores redundant invocations.
      [self addWindowController:self.additionalWC];
      [self.additionalWC showWindow:self];
    }
    

    在 AdditionalWindowController 中,您可以随时调用

    id document = [self document];
    //do what ever you want e.g. somethingDidChanged | direct method call of your document
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多