Cocoa:将子视图添加到来自不同类和 nib 的视图

Posted

技术标签:

【中文标题】Cocoa:将子视图添加到来自不同类和 nib 的视图【英文标题】:Cocoa: Adding a subview to a view from a different class and nib 【发布时间】:2011-12-23 07:19:44 【问题描述】:

如果我有两个带有多个视图的 nib,有没有办法在它们之间使用 addSubview: 方法?我想做的是从其中一个 nib 中获取一个视图,并告诉它添加一个子视图,该子视图将是另一个 nib 文件中的视图。

我将它们放在单独的 nib 中的原因是因为第二个 nib 的子视图将被添加多次,使用相同的模板但参数不同。

【问题讨论】:

【参考方案1】:

是的,您可以将一个 nib 中的视图作为子视图添加到另一个 nib 中的视图。

您需要创建一个 NSViewController 对象,该对象将拥有子 nib。这样一来,一旦您初始化视图控制器,与之关联的 nib 就会被加载。现在您可以使用控制器的 view 属性并将其作为子视图添加到任何其他视图。

下面的代码将帮助你更好地理解:

YourViewController.m

-(id)init 
    
    self = [super init];

     if(nil != self)
     
         [NSBundle loadNibNamed:@"myNibName" owner:self];
     

     return self; 

YourOtherClass.m

-(void)addYourViewControllerViewAsSubview
 

    YourViewController *yvc = [[YourViewController alloc] init];

    [yourOtherViewOutlet addSubview:yvc.view];


【讨论】:

以上是关于Cocoa:将子视图添加到来自不同类和 nib 的视图的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa 加载 ViewNib

IOS:如何使从 nib 文件加载的子视图可以使用它的按钮(IBAction)

Cocoa - 从 nib 加载视图并将其显示在 NSView 容器中,作为子视图

Cocoa - 如何以编程方式初始化视图?

来自笔尖的 NSWindowController 子类初始化不使用 -initWithCoder:?

从情节提要加载的 nib 的 Cocoa replaceSubview