【发布时间】:2011-06-27 10:31:46
【问题描述】:
我在 MainMenu.xib 中有一个自定义视图,其中包含 2 个子视图。这些子视图应该从一些具有单个 NSView 的 xib 文件中加载。 我怎样才能做到这一点? 包含每个 xib 的 IBOutlet 和 IBActions 的类应该从哪个类继承?对于每个 xib,我必须将文件所有者设置为包含出口/动作的类?
【问题讨论】:
标签: objective-c cocoa macos
我在 MainMenu.xib 中有一个自定义视图,其中包含 2 个子视图。这些子视图应该从一些具有单个 NSView 的 xib 文件中加载。 我怎样才能做到这一点? 包含每个 xib 的 IBOutlet 和 IBActions 的类应该从哪个类继承?对于每个 xib,我必须将文件所有者设置为包含出口/动作的类?
【问题讨论】:
标签: objective-c cocoa macos
你可以使用:
- (BOOL)loadNibNamed:(NSString *)nibName
owner:(id)owner
topLevelObjects:(NSArray * _Nonnull *)topLevelObjects
加载你的xib文件,topLevelObjects参数是一个通过引用传递的数组,调用函数后它将包含你的xib中的对象数组,你感兴趣的是一个NSView类型的对象,你可以添加到任何地方的视图
【讨论】:
您的自定义视图或主菜单的头文件应该#include 您提到的 2 个子视图,并且您应该将它们列为 IBOutlet 成员和 IBOutlet 属性。 (别忘了合成!)
在您的 xib 文件中,您应该能够拖入 2 个 NSView,然后将它们的类设置为您的 2 个子类,然后通过从“文件所有者”拖动到“对象”列表中的对象来链接它们。
【讨论】: