来自 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