2016-02-01 2 views
5

Как я могу поделиться одним xib среди нескольких подклассов UITableViewCell?Несколько подклассов UITableViewCell с использованием того же xib?

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

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.tableView registerNib:[UINib nibWithNibName:@"BaseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"BaseCell"]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BaseCell *baseCell = [tableView dequeueReusableCellWithIdentifier:@"BaseCell" forIndexPath:indexPath]; 

    ... 

Что мне нужно здесь, а это экземпляр моего ChildCell - который является подклассом BaseCell. Есть идеи?

+0

Изменение структуры класса может быть лучшим подходом. Добавление состояний для ячейки и ответ в соответствии с текущим состоянием ячейки - еще один вариант. – meth

ответ

1

Используйте композицию, а не наследование. Сохраняйте соотношение 1-1 между классом BaseCell и его ячейкой в ​​nib, добавьте свойство для объекта реализации, который вы создаете и добавляете к объекту ячейки после его удаления.

1

Теперь нет способа использовать одинаковые xib для нескольких сот.

Но вы можете отделить часть xib, которую будет использовать вся ячейка.

И в каждой ячейке вы установите subview для этого класса subview, и теперь вы можете повторно использовать это представление для всей ячейки.

Вы можете увидеть мое изображение для этого примера:

Первый мобильный:

enter image description here

Второй Cell: enter image description here

И подтаблицы два использование клеток:

enter image description here

Теперь вам не нужен дубликат xib и он может повторно использовать эту часть пользовательского интерфейса.

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