2013-03-27 37 views
0

我做了一系列UIView的子类。每个都从另一个继承。如何知道是否加载了NIB文件?

在所有子类的盛大隆重的父母是这样的代码:

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

这段代码的问题是,并非所有的子类有自己的NIB。有些人使用他们父母班的NIB。

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

我该怎么做?

+1

对象是使用'的initWithCoder初始化:'方法。我想你可以重写初始化程序并保留一个标志以供稍后检查。 – Alladinian 2013-03-27 10:37:48

回答

0

该代码不会按预期工作,对不起:您使用NSStringFromClass([self class])来获取笔尖名称,因此如果它不存在与类名称的笔尖,它将不会加载,对象将为零。 NIB中没有任何继承。 当类名失败时,您可以尝试使用明确的nib名称。喜欢的东西:

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

,或者你可以得到所有的对象层次结构类和全部尝试,直到你找到一个NIB ..这是通过笔尖/故事板实例

相关问题