1

У меня есть несколько представлений коллекции, которые должны использовать те же прототипы. Прямо сейчас, я дублирую ячейки прототипа в каждом представлении коллекции в раскадровке (как видно ниже). Это не очень СУХОЙ и становится больно при изменении раскадровки в клетках.Повторное использование одного UICollectionViewCell в нескольких представлениях коллекции

Можно ли определить ячейку в одном месте в раскадровке?

enter image description here

В качестве альтернативы я попытался использовать только один вид коллекции, но я не мог получить раскладку 3 столбца, где ячейки стека и прокручивать по вертикали, так что я переехал в 3-х представлений коллекции.

+3

Создайте пользовательский класс и .xib для CollectionViewCell – 72A12F4E

ответ

3

Да, это возможно. Я никогда не проектировал клетки (UITableView или UICollectionView) в раскадровке. Скорее всего, вам нужно будет их повторно использовать, как это имеет место здесь.

Для начала создайте новый вид (Файл> Создать> Файл) и выберите параметр «Вид» в разделе «Интерфейс пользователя». Неважно, какую группу устройств вы выберете, так что дайте ей имя (я называю мой NibCell). Он откроется в холсте - первое задание - удалить существующее представление и перетащить в ячейку просмотра коллекции из обозревателя объектов.

Вы также создадите подкласс класса UICollectionViewCell и установите его в класс xib-файла в построителе интерфейса. После того, как вы создали xib и подключили элементы к пользовательскому классу, вам необходимо зарегистрировать его так, как в своем классе, в котором есть UICollectionView (), не забудьте сначала импортировать его собственный класс ячеек!)

UINib *cellNib = [UINib nibWithNibName:@"NibCell" bundle:nil]; 
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cvCell"]; 

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

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *cellIdentifier = @"cvCell"; 

    CVCell *cell = (CVCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 
    //Setup the cell for use 
    return cell; 

} 

И то вообще все есть на него. Надеюсь, это поможет!

+0

, можем ли мы сделать это без xib, непосредственно из раскадровки? –

+0

Можете ли вы сделать то, что из раскадровки? @TejasArdeshna – Tander

+0

не уверен, в принципе у меня есть сборка 3-4 вида в одном viewcontroller, я хочу показать одну и ту же ячейку в каждом представлении коллекции. –

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