objective-c - 如何从界面生成器访问窗口 View ?

标签 objective-c xcode cocoa interface-builder

我正在尝试在 xcode 的界面生成器中为 cocoa 应用程序创建界面。我在界面生成器中创建的一个窗口的 View 依赖于另一个 View 的数据,因此有必要从必须向其传递数据的类向该 View 发送消息。但是,我似乎无法找到一种方法来从 nib 文件的所有者那里获取此 View 对象的引用。我正在使用的代码大致如下:

controller = [[NSWindowController alloc] initWithWindowNibName:@"Somenibname"];
[[controller window] display];
theOtherView = [[[[controller window] contentView] subviews] objectAtIndex:1];
[theOtherView setObjectwhichneedstobemessaged:self];
[theOtherView sendAMessage:self];

此代码所在的对象永远不会收到该消息。最初我实际上认为内容 View 是出现在界面生成器中的 View ,并尝试像这样获取对它的引用

theOtherView = [[[ Controller 窗口] contentView]];

但这也不起作用。感谢您的阅读。

最佳答案

听起来您可能需要更好地了解 View Controller 结构如何与 nib 文件一起工作,并且如果没有更多代码/细节,很难确切地知道您要做什么,但是解决问题的快速方法可以是使用 NSNotification,而不是尝试定位其他 View 并通过调用链发送消息。

您可以注册以处理来自接收 View 的通知,并从发起 View 发送通知(如果您需要两种方式,反之亦然)。

关于objective-c - 如何从界面生成器访问窗口 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11406157/

相关文章:

macos - 更改高亮显示的NSButton背景颜色

iphone - 想从邮政编码中获取州名

objective-c - 如何在Objective-C的JSON中创建真/假

ios - fatal error : module 'cloud_firestore' not found

ios - 如何将 CATransform3DTranslate 转换为 CGAffineTransform,以便它可以模仿轮播 View

objective-c - 在 iPhone 上录制音频并使用 NSOutputStream 通过网络发送

iphone - iOS 应用程序窗口未初始化

iphone - 苹果单例查询示例?

ios - 我在 iPhone 中哪里可以找到保存的文件?

cocoa - NSDrawNinePartImage 间隙