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

时间:2015-09-05 00:08:50

标签: ios objective-c nsbundle tableviewcell loadnibnamed

我知道loadNibNamed班的NSBundle是如何工作的;在某些文档中,我发现了类似

的内容
[[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];

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

2 个答案:

答案 0 :(得分:5)

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

您可以加载它:

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

答案 1 :(得分:3)

此方法返回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];

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