Цель C: метод loadNibNamed: как он работает?

Я бы знал, как работает loadNibNamed класса NSBundle; В каком-то документе я нахожу что-то вроде

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];

без возвращаемого значения; только что вызванный внутри метода (например, cellForRowAtIndexPath, если я хочу настроить свою ячейку). В других документах я нахожу:

NSArray* vett=[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];

В этом случае, например, в cellForRowAtIndexPath я мог бы

 return [vett lastObject];

или что-то в этом роде. Последний метод кажется мне ясным; Я загружаю перо в вектор, а затем использую векторные элементы. Проблема в том, чтобы понять, что именно делают первые:

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];

нет возвращаемого значения, нет ссылки на ячейку... где объекты моего пера? как они обрабатываются? я не понимаю как это работает


person volperossa    schedule 05.09.2015    source источник
comment
Я не могу сказать это лучше, чем документацию iOS для этого API или дать вам более подробный обзор, чем этот раздел о размещении пользовательского представления   -  person Tom Howard    schedule 05.09.2015


Ответы (2)


Этот метод возвращает массив объектов в наконечнике. Например, если вы хотите создать экземпляр пользовательского представления, вам нужно использовать возвращаемое значение так, как описывает anthu.

NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:nil options:nil];
CustomView * customView = [arr firstObject];

Однако, если вы хотите использовать xib для настройки владельца файла (обратите внимание, что вы можете передать владельца этому методу), вас может не интересовать возвращаемый массив. Например. Если xib соединяет IBActions и IBOutlets владельца файла с элементами в xib.

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:nil];

Вы также можете комбинировать оба подхода.

person johnpatrickmorgan    schedule 05.09.2015

Например, у вас есть подкласс UIView с пользовательским наконечником @"CustomView"

Вы можете загрузить его:

    NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil];
    CustomView * customView = [arr firstObject];
person tuledev    schedule 05.09.2015