UICollection View - не добавляет новые пользовательские ячейки - PullRequest
0 голосов
/ 03 октября 2018

У меня есть коллекция ViewView внутри представления.Я установил источник данных, делегата и все остальное.

Эта ячейка работает:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [self.collectionAddedMembers dequeueReusableCellWithReuseIdentifier:cellReuseIdentifierAdded forIndexPath:indexPath];
    cell.backgroundColor = [colores objectAtIndex:arc4random_uniform(6)];
    return cell;
}

Но в моей пользовательской ячейке AddedMemberCollectionViewCell не добавляются новые ячейки:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    AddedMemberCollectionViewCell *cell = [self.collectionAddedMembers dequeueReusableCellWithReuseIdentifier:cellReuseIdentifierAdded forIndexPath:indexPath];
    NSArray *firstSection = [selectedMembersData objectAtIndex:0];
    SelectedContacto *cellData = [firstSection objectAtIndex:indexPath.row];
    NSMutableDictionary *dataForConfigure = [[NSMutableDictionary alloc] init];
    [dataForConfigure setObject:cellData.contactAvatar forKey:@"contactAvatar"];
    [dataForConfigure setObject:cellData.contactName forKey:@"contactName"];
    [dataForConfigure setObject:cellData.memberId forKey:@"contactName"];
    [cell configure:dataForConfigure];
    return cell;
}

Это код пользовательской ячейки.

.h файл:

@interface AddedMemberCollectionViewCell : UICollectionViewCell
@property (nonatomic) IBOutlet UIImageView *avatar;
@property (nonatomic) IBOutlet UILabel *memberName;
@property (nonatomic) IBOutlet UIButton *removeMember;
@property (nonatomic) NSNumber *memberId;
- (void) configure:(NSDictionary*)cellData;
@end

.m файл

#import "AddedMemberCollectionViewCell.h"

@implementation AddedMemberCollectionViewCell
- (void) configure:(NSDictionary*)cellData {
    self.avatar = [cellData objectForKey:@"contactAvatar"];
    self.memberName = [cellData objectForKey:@"contactName"];
    self.memberId = [cellData objectForKey:@"memberId"];
}
@end

Я мог бы предоставить больше кода, но я думаю, что в этом нет необходимости.Что здесь происходит?

РЕДАКТИРОВАТЬ:

Регистрация в viewDidLoad:

self.searchBar.delegate = self;
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.collectionAddedMembers.dataSource = self;
self.collectionAddedMembers.delegate = self;
[self.collectionAddedMembers registerClass:AddedMemberCollectionViewCell.class forCellWithReuseIdentifier:cellReuseIdentifierAdded];

1 Ответ

0 голосов
/ 03 октября 2018

Вы уверены, что ячейка на самом деле не добавлена ​​в представление вашей коллекции?

Однако вы сделали это неправильно, так как вызов dequeueReusableCellWithReuseIdentifier НЕ создаст UICollectionViewCell, но будет повторно использовать существующийячейка, следовательно, ваш код инициализации в init никогда не будет вызываться.

Хороший подход должен выглядеть следующим образом:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    CustomCell *cell = (CustomCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

    NSDictionary *cellData = [data objectAtIndex:indexPath.row];

    // Call custom cell's configure function to init cell content
    [cell configure:cellData];
    return cell;
}

@interface CustomCell : UICollectionViewCell
-(void)configure:(NSDictionary *)data;
@end

@implementation CustomCell

-(void)configure:(NSDictionary *)data {
    // Init your cell content
}

@end
...