UIView 和 XIB 连接。正在显示吗?

Posted

技术标签:

【中文标题】UIView 和 XIB 连接。正在显示吗?【英文标题】:UIView and XIB connections.Displaying it? 【发布时间】:2011-10-17 03:18:05 【问题描述】:

如何在 UIView 上显示 XIB/NIB 文件?我已经搜索过,但没有找到。我想在主视图上显示 xib 界面,我有五个 xib 文件,我需要每个一个显示在 UIView 上!有些人谈到了这段代码,但我在哪里实现:

NSArray *screens=[[NSBundle mainBundle] loadNibNamed:@"JaneiroClass" owner:self options:nil];          
        [self addSubview:[screens objectAtIndex:0]];

【问题讨论】:

【参考方案1】:

这将从 XIB 加载视图。 UINib 还缓存,因此您可以快速删除它们。

UINib *nib = [UINib nibWithNibName:@"TestView" bundle:nil];
UIView *myView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]];

instantiateWithOwner 返回 XIB 中***对象的数组。在上面的例子中,只有一个视图(上面有库中的其他对象),所以我们检索了 objectAtIndex:0。

获得视图后,您可以将其添加到其他视图。例如,您可以在传递以下内容的另一个视图上调用 addSubView:

[someView addSubView:myView];

【讨论】:

你能不能说的具体点,我很困惑! @bryanmac 这非常很有帮助。谢谢。【参考方案2】:

我在我的博客http://effectivemobility.blogspot.com/2011/05/using-custom-cells-in-your-uitableview.html 中发布了一篇关于从 nib 加载自定义视图的文章

关键部分是这个方法

+ (id)customViewForClass:(Class)customClass 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(customClass) owner:nil options:nil];
    for ( id currentObject in topLevelObjects ) 
        if ( [currentObject isKindOfClass:customClass] ) 
            return currentObject;
        
    

    return nil;

【讨论】:

拜托,你举了一些例子,但是我如何在 UIView 中显示 xib?

以上是关于UIView 和 XIB 连接。正在显示吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 XIB 中连接 UIView 并使用 Story board 中的 View Controller 加载它

Xib的连接问题和创建的网点

带有 Xib 文件的 UIView 的子类

从 xib 加载子类时如何设置子类 UIView 属性的值

UIView 没有出现在 xib 上

XIB 中的 UIView 子类不显示(drawRect:从未调用)