来自 NSWindowController Cocoa 的自定义视图

Posted

技术标签:

【中文标题】来自 NSWindowController Cocoa 的自定义视图【英文标题】:Custom view from NSWindowController Cocoa 【发布时间】:2018-05-22 03:10:12 【问题描述】:

我有一个有两个窗口的应用程序,主窗口打开第二个窗口,它是 NSWindowController,在它的 xib 文件中有一个 custom view,有什么方法可以在这个 custom view 中绘制NSWindowController?

谢谢

【问题讨论】:

"来自 NSWindowController 的自定义视图" 你说的不合逻辑。 @ElTomato 我必须通过 NSWindowcrontroller 访问 nsview 方法,这就是我所需要的,但是 NSview 已经初始化,所以我不能使用 NSview *view = [[NSView alloc] init] 【参考方案1】:

在您的自定义 NSView 中覆盖 - (void) drawRect:(NSRect) dirtyRect 以进行绘图。

如果你需要从你的(自定义)NSWindowController 通知这个 drawRect 方法,你可以通过设置一个从视图到 NSWindowController 的出口来使用委托或数据源模式。

【讨论】:

不是一个例子,但这个问题讨论了两种方法-***.com/q/2232147/3342547【参考方案2】:

已解决,我已经声明了两个IBOutlets,一个在NSView

IBOutlet MyNSWindowController *wc;

还有一个NSWindowController:

IBOutlet MyNSView *view;

然后,我必须将它们连接到custom view

现在我可以使用它的方法,只需调用它的IBOutlets

【讨论】:

请注意,原则上创建从一个窗口A 到另一个窗口B 的视图并不是一个好主意——它们应该存在、移动和释放独立的,他们会的。因此,B 的视图的国外出口可以随时由于窗口A 控制之外的原因变为 nil。当心;并考虑在两个窗口之间创建不同类型的交叉连接,也许使用一个知道两个窗口控制器的委托。

以上是关于来自 NSWindowController Cocoa 的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

如何通过按 ESC 键关闭窗口(NSWindowController)?

通过 NSWindowController 从窗口中删除 RepresentedFilename

NSWindowController showWindow: 闪烁窗口

NSManagedObjectContext 传递给 NSWindowController 变为 nil

Interface builder中的NSWindowController对象链接

如何使用 xib 文件正确实现 NSWindowController 子类