将 xib 视图初始化为另一个 NSView 的子视图
Posted
技术标签:
【中文标题】将 xib 视图初始化为另一个 NSView 的子视图【英文标题】:Initializing a xib view as a subview of another NSView 【发布时间】:2015-06-16 03:11:10 【问题描述】:我正在尝试学习 OSX 开发,并且我在 .xib 文件中创建了一个视图,我正在尝试初始化然后将此视图添加为子视图。我已经用谷歌搜索了如何做到这一点,所有解决方案都适用于 ios,并使用诸如 MyViewClass* myViewObject = [[[NSBundle mainBundle] loadNibNamed:@"MyViewClassNib" owner:self options:nil] objectAtIndex:0]
之类的调用,但看起来这不是 OSX 开发的选项。有人对如何将 xib 初始化为视图有任何想法吗?谢谢
【问题讨论】:
【参考方案1】:您可以使用loadNibNamed:owner:topLevelObjects:
方法。这是一个例子:
NSArray *views = nil;
[[NSBundle mainBundle] loadNibNamed:@"TestView1" owner:nil topLevelObjects:&views];
[self.view addSubview:[views lastObject]];
上面的代码会将 XIB 的***内容加载到一个数组中。根据文档:
从此包中加载具有指定文件名和所有者的 nib。 成功后,该方法返回 YES 和可选的输出参数 topLevelObjects 填充了 nib 的***对象。 对象遵循标准的 Cocoa 内存管理规则和 被自动释放。***对象的 IBOutlet 属性应该是 strong(保留)以证明所有权并防止重新分配。 或者,一个人可能对顶层有强烈的参考 对象数组。
【讨论】:
以上是关于将 xib 视图初始化为另一个 NSView 的子视图的主要内容,如果未能解决你的问题,请参考以下文章