UICollectionviewcell изменить фон

iphone objective-c uicollectionview

93 просмотра

2 ответа

Как изменить фон в ячейке, если я знаю номер раздела и номер элемента? Код ниже показывает, как я пытался это сделать.

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

    cell.titleLabel.text = [NSString stringWithFormat:@"%i",indexPath.item-dayStart+2];

    if (indexPath.section == todayMonthSection && indexPath.item == dayPlusShift){

        cell.backgroundColor = [UIColor colorWithRed:60.0/255.0 green:162.0/255.0 blue:161.0/255.0 alpha:1];
        cell.titleLabel.textColor = [UIColor whiteColor];

    }

    return cell;

Но если я это сделаю, во время прокрутки нарисовал не только соответствующую ячейку.

Автор: Alexey Источник Размещён: 12.11.2019 09:11

Ответы (2)


0 плюса

Решение

То, что вы видите, - это повторное использование ячейки при прокрутке представления; повторно использованная ячейка все еще имеет цвет фона от более раннего использования. Исправьте, обрабатывая обе ветви дела (все дела) при настройке, например:

if (indexPath.section == todayMonthSection && indexPath.item == dayPlusShift){

    cell.backgroundColor = [UIColor colorWithRed:60.0/255.0 green:162.0/255.0 blue:161.0/255.0 alpha:1];
    cell.titleLabel.textColor = [UIColor whiteColor];
} else {
    cell.backgroundColor = [UIColor whiteColor];  // whatever the default color is
}

Если вы используете пользовательский подкласс UICollectionViewCell, вы также можете сбросить настройки до значений по умолчанию, реализовав метод prepareForReuse.

Автор: danh Размещён: 06.12.2013 05:16

0 плюса

вы используете CalendarCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier: @ "cellIdentifier" forIndexPath: indexPath]; представление коллекции удаляет ReusableCells, поэтому при прокрутке он снова использует старые ячейки, изменяя желаемое требование. Это происходит с цветом фона и изображениями.

добавить эту строку перед условием

CalendarCollectionViewCell *cell=[NSBundle mainBundle] loadNibNamed:@"CalendarCollectionViewCell" owner:self options:nil] objectAtIndex:0];

не используй

if(!cell){....
Автор: Waseem05 Размещён: 06.12.2013 06:19
Вопросы из категории :
32x32