0

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

在所有子类的祖父母中是这样的代码:

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

这段代码的问题在于并非所有子类都有自己的 NIB。有些人求助于使用其父类的NIB。

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

我该怎么做?

4

1 回答 1

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 ..

于 2013-03-27T11:15:56.383 回答