iPhone:如何使用IB创建的nib文件加载视图

时间:2011-12-14 10:37:10

标签: iphone

我在这里找到了类似的问题:How to load a UIView using a nib file created with Interface Builder。 但我的问题有点不同。我需要将自定义视图加载到2或3个不同的UIViewControllers中。这里有我喜欢的答案https://stackoverflow.com/a/4055353/602011但是我无法一起为myViewXib FileOwner设置三个UIViewCOntrollers。怎么样?

2 个答案:

答案 0 :(得分:2)

在IB中,您可以将FileOwner类类型设置为 UIViewController ,然后使用NSBundle的 loadNibNamed:owner:options:方法加载NIB并迭代返回的对象命令修改或引用NIB中的任何子UIView。

NSArray* topLevelObjects = [ [ NSBundle mainBundle ] loadNibNamed:"bla" 
                                                     owner:self 
                                                     options:nil ] ];

for( id object in topLevelObjects )
{
    if( [ object isKindOfClass:[ UILabel class ] ] )
    {
         UILabel* label = ( UILabel* ) object;
         label.text = @"This is My Label Now!";
    }
}

答案 1 :(得分:0)

如果你想让一个xib文件作为几个视图控制器的xib,那么基本上所有控制器都有相同的插座,但内部逻辑不同,我会说你可以创建一个带有插座的基类,设置IB在xib中使用该类,然后从那个继承你的其他控制器。

通过这种方式,您可以加载通用视图,并将其与更具体的控制器连接。但只有当它与所有控制器的xib完全相同时才会起作用。

这是基于我想你想做这样的事情:

AViewController *c1 = [[AViewController alloc] initWithNibName:@"MyXib" bundle:nil];
BViewController *c2 = [[BViewController alloc] initWithNibName:@"MyXib" bundle:nil];