2013-12-06 4 views
1

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

- (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; 

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

+0

На самом деле, в чем проблема? Cell.backgroundcolor не работает? –

ответ

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.

+0

Если вы прокрутите вниз, я нарисую нужную ячейку и ячейку на нижней части. Если вы прокрутите вверх, тогда все будет хорошо. – Alexey

+0

Это соответствует моему диагнозу. Попробуйте добавить ветку else и установить цвет так, как вы хотите, когда условие ложно. – danh

+0

Спасибо за помощь. – Alexey

0

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

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

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

не использует

if(!cell){....