【问题标题】:UIView and XIB connections.Displaying it?UIView 和 XIB 连接。正在显示吗?
【发布时间】: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]];

【问题讨论】:

    标签: iphone c++ ios xcode uiview


    【解决方案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?
    猜你喜欢
    • 2011-10-05
    • 2014-05-26
    • 1970-01-01
    • 2019-01-20
    • 2019-03-17
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多