2012-12-06 4 views
0

У меня проблема с моим табличным просмотром. Позвольте мне сначала набросать ситуацию. У меня есть вид сверху 2 buttons (Календарь и рейтинг). Ниже этих двух кнопок у меня есть табличное представление. Когда я нажимаю кнопку, я устанавливаю tableview's tag (1 or 2), и я перезагружаю данные таблицы.проблема с таблицей с разными табличными тегами

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

Сейчас для моего cellForRowAtIndex У меня много кода. Потому что я не знаю, где именно проблема, я буду размещать здесь весь код. Надеюсь, ты не потрудишься.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //standard cell 
    static NSString *simpleTableIdentifier = @"KalenderCell"; 
    KalenderCell *cell = (KalenderCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
    if ((cell == nil) || (![cell isKindOfClass:KalenderCell.class])) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"KalenderCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 

    //Cells for button 2 
    if(self.tableView.tag == 2){ 
     static NSString *simpleTableIdentifier = @"KlassementCell"; 

     KlassementCell *cell = (KlassementCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
     if ((cell == nil) || (![cell isKindOfClass: KlassementCell.class])) 
     { 
      NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"KlassementCell" owner:self options:nil]; 
      cell = [nib objectAtIndex:0]; 
     } 

     Klassement *klassement = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
     NSData *dataIcon = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:klassement.icon]]; 
     UIImage *imgIcon = [UIImage imageWithData:dataIcon]; 


     cell.lblPosition.text  = klassement.position; 
     cell.lblName.text   = klassement.name; 
     cell.lblgamesPlayed.text = klassement.gamesPlayed; 
     cell.lblGamesWon.text  = klassement.gamesWon; 
     cell.lblGamesTied.text  = klassement.gamesTied; 
     cell.lblGamesLost.text  = klassement.gamesLost; 
     cell.lblGoalsPos.text  = klassement.goalsPos; 
     cell.lblGoalsNeg.text  = klassement.goalsNeg; 
     cell.lblGoalsDiff.text  = [NSString stringWithFormat:@"%@", klassement.goalsDiff]; 
     cell.lblPoints.text   = klassement.points; 
     cell.imgClub.image   = imgIcon; 

     if([klassement.name isEqualToString:@"KRC Genk"]){ 
      cell.lblPosition.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblName.textColor   = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblgamesPlayed.textColor = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblGamesTied.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblGamesLost.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblGoalsDiff.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblGoalsNeg.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblGoalsPos.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblPoints.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      cell.lblGamesWon.textColor  = [UIColor colorWithRed:(56/255.0) green:(119/255.0) blue:(189/255.0) alpha:100] ; 
      return cell; 
     } 

     return cell; 

     //Cells for button 1 
    }else if(self.tableView.tag == 1){ 
     static NSString *simpleTableIdentifier = @"KalenderCell"; 

     KalenderCell *cell = (KalenderCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
     if ((cell == nil) || (![cell isKindOfClass:KalenderCell.class])) 
     { 
      NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"KalenderCell" owner:self options:nil]; 
      cell = [nib objectAtIndex:0]; 
     } 

     Kalender *kalender = [self.fetchedResultsController objectAtIndexPath:indexPath]; 

     NSData *imgDataHome = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:kalender.homeIcon]]; 
     NSData *imgDataAway = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:kalender.awayIcon]]; 

     UIImage *imgHome = [UIImage imageWithData:imgDataHome]; 
     UIImage *imgAway = [UIImage imageWithData:imgDataAway]; 

     // Then configure the cell using it ... 
     if([kalender.type isEqualToString:@"JPL"]){ 
      _imgType = [UIImage imageNamed:@"jupiler.png"]; 
     }else if ([kalender.type isEqualToString:@"EU"]){ 
      _imgType = [UIImage imageNamed:@"europa.jpg"]; 
     }else { 
      _imgType = nil; 
     } 

     cell.lblHome.text   = kalender.home; 
     cell.lblHomeScore.text  = kalender.homeScore; 
     cell.lblAwayScore.text  = kalender.awayScore; 
     cell.lblAway.text   = kalender.away; 
     cell.lblDate.text   = kalender.date_text; 
     cell.lblHour.text   = kalender.hour; 
     cell.img_Home.image   = imgHome; 
     cell.img_Away.image   = imgAway; 
     cell.img_type.image   = _imgType; 


     return cell; 
    } 


    return cell; 

} 

Другая проблема заключается в том, что иногда клетки дублируют себя внутри Tableview 2 или 3 раза, но когда я обновить их Tableview снова ОК.

Я знаю, что это много кода. Но я надеюсь, ты хочешь мне помочь!

С уважением, и большое спасибо!

экран с проблемой

enter image description here

+0

Просто удалите все подвиды вашей ячейки каждый раз, когда вы загружаете ячейку, используя dequeueReusableCellWithIdentifier. Это действительно работает для меня. Попробуйте мой ответ ниже. –

ответ

1

на сильфон состояния установить синий цвет

if([klassement.name isEqualToString:@"KRC Genk"]){ 
     /// set blue color 
    } 

, как это добавить еще часть с черным цветом

как сильфон .. .

  else{ 
      cell.lblPosition.textColor  = [UIColor blackColor] ; 
      cell.lblName.textColor   = [UIColor blackColor] ; 
      cell.lblgamesPlayed.textColor = [UIColor blackColor] ; 
      cell.lblGamesTied.textColor  = [UIColor blackColor] ; 
      cell.lblGamesLost.textColor  = [UIColor blackColor] ; 
      cell.lblGoalsDiff.textColor  = [UIColor blackColor] ; 
      cell.lblGoalsNeg.textColor  = [UIColor blackColor] ; 
      cell.lblGoalsPos.textColor  = [UIColor blackColor] ; 
      cell.lblPoints.textColor  = [UIColor blackColor] ; 
      cell.lblGamesWon.textColor  = [UIColor blackColor] ; 
      return cell; 
     } 
+0

Это не работает, другие ячейки продолжают получать синий цвет. – Steaphann

+0

Я говорю о проблеме, с которой сталкивается, когда вы прокручиваете табличное представление после того, как ваша смена ячейки синим цветом с другой ячейкой, правильно? –

+0

Нет, у меня есть функция вниз для обновления на моем столе. Когда это называется, я очищаю данные таблицы, а затем перезагружаю его. Когда он перезагружается. другие ячейки, кроме ячейки «KRC GENK», являются синими. – Steaphann

2

Добавьте следующую строку в еще части создании новой ячейки:

[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

Вы можете увидеть мой ответ here

Просто попробуйте это:

if ((cell == nil) || (![cell isKindOfClass:KalenderCell.class])) 
{ 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"KalenderCell" owner:self options:nil]; 
    cell = [nib objectAtIndex:0]; 
} 
else 
{ 
    [cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
} 
Смежные вопросы