2013-03-27 8 views
0

Я сделал серию подклассов UIView. Каждый наследуется от другого.Как узнать, загружен ли файл NIB или нет?

В гранд великих родителей все подкласса этот код:

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

Проблема с этим кодом является то, что не все подклассы имеют свой собственный СИБ. Некоторые прибегают к использованию NIB своего родительского класса.

Я хочу проверить, был ли загружен UIView из NIB или нет до выполнения кода.

Как мне это сделать?

+1

Объекты, воплощенные с помощью СИБ/раскадровки инициализируются с помощью 'initWithCoder:' метод. Я думаю, вы можете переопределить инициализатор и сохранить флаг для проверки позже. – Alladinian

ответ

0

Этот код не будет работать так, как вы ожидали, извините: вы используете NSStringFromClass([self class]), чтобы получить имя nib, поэтому, если он не существует нить с именем класса, он не будет загружен и объект будет равен нулю. В NIB нет никакого наследования. Вы можете попробовать использовать явное имя nib, если сбой имени класса. Что-то вроде:

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

или вы могли бы получить все классы иерархии объектов и попробовать их все, пока вы найдете один СИБ ..

 Смежные вопросы

  • Нет связанных вопросов^_^