2013-03-27 34 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 ..這是通過筆尖/故事板實例

相關問題