2015-02-05 1 views
6

Я пытаюсь использовать один файл XIB для нескольких типов пользовательских подклассов UITableViewCell (одни и те же IBOutlets - одинаковый внешний вид - разные методы и логика).Один XIB для нескольких подклассов UITableViewCell

Как я могу это сделать?

+0

ли пользуешься одного tablview? –

ответ

2

Строго говоря, структура не обеспечивает строгое связывание с xib своим владельцем файла. Вы можете использовать следующий код для загрузки пера:

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCustomCell" owner:nil options:nil]; 
EXFirstCustomCell *firstCell = (EXFirstCustomCell*)[nibContents objectAtIndex:0]; 
firstCell.firstView = [firstCell.contentView viewWithTag:VIEW_TAG]; 
firstCell.button = [firstCell.contentView viewWithTag:BUTTON_TAG]; 

на основе бизнес-логике, вы можете бросить результат [nibContents objectAtIndex:0];, чтобы удовлетворить ваш изготовленный на заказ UITableViewCell класса.

Edit # 1:

Приведение типов, как правило, плохая идея, так как firstCell еще будет вид класса UITableViewCell. Хорошей идеей было бы создать свой собственный конструктор, передать nibContents в качестве аргумента и назначить там свои назначения.

Edit # 2

Я сделал немного экспериментов и вот как я получил эту работу:

  1. Создать независимый вид XIb и дизайн вашей келью. Это должно быть мнение. Что вы здесь делаете, так это определение того, как будет выглядеть contentView.

  2. Загрузить все виды из xib. NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCommonContentView" owner:nil options:nil];

  3. Создать конструктор пользовательской ячейки следующим образом:

    -initWithNibContents:(NSArray*)nibContents { 
        self = [super init] 
        if(self) { 
         self.contentView = [nibContents objectAtIndex:0]; 
         self.button = [self.contentView viewWithTag:BUTTON_TAG]; 
         self.view = [self.contentView viewWithTag:VIEW_TAG]; 
        } 
    } 
    

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

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