我有一个 NSWindow,里面有一个 NSView 和一个 NSTextField。
我现在正在使用界面生成器。我已经在默认的 NSWindow 上删除了这两个控件,并将 NSView 子类化。我正在-drawRect
从 NSView 实现该方法,我需要访问 NSTextField 的内容。
如何从 NSView 中的方法引用 NSTextField 的实例?
我有一个 NSWindow,里面有一个 NSView 和一个 NSTextField。
我现在正在使用界面生成器。我已经在默认的 NSWindow 上删除了这两个控件,并将 NSView 子类化。我正在-drawRect
从 NSView 实现该方法,我需要访问 NSTextField 的内容。
如何从 NSView 中的方法引用 NSTextField 的实例?
您的 NSWindow 是(或应该)由窗口控制器控制。在 IB 中,您在窗口控制器中为 NSTextField 创建一个出口。使用插座,您可以参考 NSTextField:
在您的窗口控制器 .h 文件中:
@property (strong) IBOutlet NSTextField *myTextField;
在您的窗口控制器 .m 文件中:
@synthesize myTextField;
从那里你可以在你的控制器中:
[[self myTextField] setEditable: NO];
需要注意的一点是,您不能直接从该窗口访问窗口中的控件,因为窗口(以及与此相关的所有 Cocoa 控件)静态存储在 XIB/NIB 文件中。所有对控件(UI 元素)的访问都通过控制器(NSWindowController
, NSViewController
)进行引导,这些控制器又能够加载 XIB/NIB 文件。
Apple 在其文档中提供了有关如何执行此操作的各种示例。