将xib视图初始化为另一个NSView的子视图

时间:2015-06-16 03:11:10

标签: objective-c macos cocoa xib nib

我正在尝试学习OSX开发,并且我已经在.xib文件中创建了一个视图,并且我尝试初始化然后将此视图添加为子视图。我已经搜索了如何执行此操作,并且所有解决方案都适用于iOS并使用MyViewClass* myViewObject = [[[NSBundle mainBundle] loadNibNamed:@"MyViewClassNib" owner:self options:nil] objectAtIndex:0]等调用,但看起来这不是OSX开发的选项。有人对如何将xib初始化为视图有任何想法吗?感谢

1 个答案:

答案 0 :(得分:3)

您可以使用loadNibNamed:owner:topLevelObjects:方法。这是一个例子:

NSArray *views = nil;
[[NSBundle mainBundle] loadNibNamed:@"TestView1" owner:nil topLevelObjects:&views];
[self.view addSubview:[views lastObject]];

上面的代码会将XIB的顶级内容加载到数组中。根据文件:

  

使用指定的文件名和所有者从此捆绑包中加载nib。   成功后,该方法返回YES和可选的out参数   topLevelObjects使用nib的顶级对象填充。   这些对象遵循标准的Cocoa内存管理规则和   是自动释放的。顶级对象的IBOutlet属性应该是   强(保留)以证明所有权并防止解除分配。   或者,可以对顶级人员进行强有力的引用   对象数组。