从NSWindowController子类访问NSDocument?

时间:2018-11-07 17:44:51

标签: objective-c xcode cocoa document-based

我正在创建基于文档的简单应用程序。到目前为止,我已经实现了NSDocument子类Document和NSWindowController子类ToolbarWindowController。 ToolbarWindowController控制工具栏,该工具栏具有用于修改用户打开的图像的滑块。

我现在遇到的问题是在打开的图像上应用过滤器(修改图像):我不知道如何在ToolbarWindowController中使用打开的图像作为源。

F.e。在Document中打开图像时,可以在ViewController中将其设置为makeWindowControllers imageView:

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError {
    image = [[NSImage alloc] initWithData:data];
    return YES;
}
- (void)makeWindowControllers {
    NSStoryboard* const storyboard = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
    NSWindowController* const windowController = [storyboard instantiateControllerWithIdentifier:@"Document Window Controller"];
    [[((ViewController *)[windowController contentViewController]) imageView] setImage:image];

    [self addWindowController: windowController];
}

我可以以某种方式访问​​我的ToolbarWindowController属性/变量并在其中创建NSImage属性以修改打开的图像吗?还是可以访问Document属性来实现同一目的?它甚至可以那样工作吗?

1 个答案:

答案 0 :(得分:3)

NSWindowController具有document属性。如果一切正确连接,该属性将指向拥有NSDocument的{​​{1}}对象。