目标 C:loadNibNamed 方法:它是如何工作的?

Posted

技术标签:

【中文标题】目标 C:loadNibNamed 方法:它是如何工作的?【英文标题】:Objective C : loadNibNamed method: how does it work? 【发布时间】:2015-09-05 00:08:49 【问题描述】:

我会知道loadNibNamedNSBundle 类是如何工作的;在某些文档中,我发现类似

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];

没有返回值;只是在一个方法中调用(例如cellForRowAtIndexPath,如果我想自定义我的单元格)。在我发现的其他文件中:

NSArray* vett=[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];

在这种情况下,例如在cellForRowAtIndexPath,我可以

 return [vett lastObject];

或类似的东西。 后一种方法在我看来很清楚;我将笔尖加载到向量中,然后使用向量元素。问题是要了解第一个具体做什么:

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];

没有返回值,没有单元格引用...我的笔尖的对象在哪里?他们是如何处理的?我不明白它是如何工作的

【问题讨论】:

我不能说比ios documentation for that API 更好,或者给你比this section on allocating a custom view 更好的概述 【参考方案1】:

例如,您有一个带有自定义 nib @"CustomView" 的子类 UIView

你可以加载它:

    NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil];
    CustomView * customView = [arr firstObject];

【讨论】:

【参考方案2】:

此方法返回 nib 中的对象数组。例如,如果您想实例化一个自定义视图,您将希望以 anthu 描述的方式使用返回值。

NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:nil options:nil];
CustomView * customView = [arr firstObject];

但是,如果您想使用 xib 来配置文件的所有者(请注意,您可以将所有者传递给此方法),您可能对返回的数组不感兴趣。例如。如果 xib 将文件所有者的 IBActions 和 IBOutlets 连接到 xib 中的元素。

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:nil];

您也可以结合使用这两种方法。

【讨论】:

以上是关于目标 C:loadNibNamed 方法:它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

使用方法[NSBundle loadNibNamed:xibName owner:[NSApplication sharedApplication]]加载Nib时如何传递参数?

如何在 ios 中使用 UI NIB 而不是 loadNibNamed 来自定义 UI 表格视图单元格?

为啥“loadNibNamed”方法返回数组?

在为自定义视图调用 NSBundle(使用 loadNibName)后访问 IBOutlets 的最佳方法

使用 loadNibNamed: 方法时是不是需要释放 IBOutlets?

使用 loadNibNamed 加载视图时,如何在 UIView 上调用便利初始化程序?