我如何知道是否加载了NIB文件?

时间:2013-03-27 10:32:12

标签: objective-c xcode4.5 subclassing

我制作了一系列UIView子类。每个都是从另一个继承。

所有子类的祖父母都是这段代码:

NSString * className = NSStringFromClass([self class]);
[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil];

此代码的问题在于并非所有子类都有自己的NIB。有些人使用他们父类的NIB。

我想在执行代码之前检查是否已从NIB加载UIView

我该怎么做?

1 个答案:

答案 0 :(得分:0)

该代码无法按预期工作,抱歉:您使用NSStringFromClass([self class])来获取nib名称,因此如果它不存在带有类名的nib,它将不会加载,并且对象将为nil 。 NIB中没有任何继承。 当类名失败时,您可以尝试使用显式的nib名称。类似的东西:

id myView = [[NSBundle mainBundle] loadNibNamed:className owner:self options:nil];
if (!myView)
    myView = [[NSBundle mainBundle] loadNibNamed:@"defaultNIBname" owner:self options:nil];

或者你可以获得所有对象层次结构类并一直尝试它们直到你找到一个NIB ..