2014-07-21 3 views
0

Я пытаюсь создать таблицу коллапса, как это collapse tableinsertRowsAtIndexPaths пользовательский стиль

Мой код:

- (WordListTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"wordListTableCell"; 

    WordListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

    if (cell == nil) { 
     cell = [[WordListTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
    } 


    NSDictionary *uu = [wordList objectAtIndex:indexPath.row]; 

    if(!addingNewCellFlag) 
    { 
     if([[[Singleton sharedInstance] currentLaguage] isEqualToString:@"en"]) 
     { 
      cell.textLabel.text = [uu valueForKey:@"tiitle_en"]; 
     } 
     else if([[[Singleton sharedInstance] currentLaguage] isEqualToString:@"ru"]) 
     { 
      cell.textLabel.text = [uu valueForKey:@"tiitle_ru"]; 
     } 
     UIImage *buttonImage; 
     if(indexPath.row==0) 
     { 
      buttonImage = [[UIImage imageNamed:@"rowFirst.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; 
     } 
     else 
     { 
      buttonImage = [UIImage imageNamed:@"rowMiddle.png"]; 
     } 

     cell.backgroundView = [[UIImageView alloc] initWithImage:buttonImage]; 
     cell.textLabel.textColor = [UIColor whiteColor]; 
     cell.textLabel.textAlignment = NSTextAlignmentCenter; 
     cell.isCanExpanded = TRUE; 
    } 
    else 
    { 
     if([[[Singleton sharedInstance] currentLaguage] isEqualToString:@"en"]){ 
      cell.textLabel.text = [uu valueForKey:@"content_en"]; 
     } 
     else if([[[Singleton sharedInstance] currentLaguage] isEqualToString:@"ru"]) 
     { 
      cell.textLabel.text = [uu valueForKey:@"content_ru"]; 
     } 
     cell.backgroundColor = [UIColor colorWithRed:253/255.0 green:252/255.0 blue:222/255.0 alpha:1]; 
     cell.textLabel.textColor = [UIColor blackColor]; 
     cell.textLabel.textAlignment = NSTextAlignmentJustified; 
     cell.isCanExpanded = FALSE; 
    } 
    [cell setIsExpanded:FALSE]; 
    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    WordListTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    addingNewCellFlag = TRUE; 
    if(cell.isCanExpanded) 
    { 
     if(![cell isExpanded]){ 

      [cell setIsExpanded:TRUE]; 

      NSDictionary *uu = [wordList objectAtIndex:indexPath.row]; 
      [wordList insertObject:uu atIndex:indexPath.row+1]; 


      [self.tableView beginUpdates]; 

      [self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row+1 inSection:0]] 
            withRowAnimation:UITableViewRowAnimationTop]; 
      [self.tableView endUpdates]; 

     } 
     else if ([cell isExpanded]) 
     { 
      [cell setIsExpanded:FALSE]; 
      [wordList removeObjectAtIndex:indexPath.row+1]; 
      [self.tableView beginUpdates]; 
      NSIndexPath * nextIndexPath = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section]; 
      [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:nextIndexPath] withRowAnimation:UITableViewRowAnimationTop]; 

      [self.tableView endUpdates]; 
     } 
    } 
    cell = nil; 

} 

Это работает, если щелкнуть на ячейке, которую мы создаем для разрушения клетки, это новая ячейка имеет право текст ([uu valueForKey:@"content_en"]), но имеют неправильный backgroundColor (cell.backgroundView = [[UIImageView alloc] initWithImage:buttonImage];). Но иногда backgroundColor прав ([UIColor colorWithRed:253/255.0 green:252/255.0 blue:222/255.0 alpha:1]).

Пожалуйста, скажите, как работает этот метод.

+1

no w какая проблема u встречается –

+0

Неверный вид фона, или цвет фона? На этот вопрос неясно. – quellish

+0

см., If (! AddNewCellFlag), я установил фоновый вид, если (! ДобавляюNewCellFlag), я устанавливаю цвет фона, но если ячейка (! AddNewCellFlag) имеет фоновое представление, почему, если я устанавливаю цвет фона? –

ответ

0

Я не вижу код в

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

Может быть, это неправильно, когда вы имеете дело с клетками различных indexpaths.

+0

Его первая строка в коде. –

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