2015-10-11 3 views
0

Я создал пользовательский tableCell для проектирования своих ячеек. Что я пытаюсь это сделать willDisplayCell изменить значение альфа-клеток, и я делаю это так:tableView ОБНОВЛЕНИЕ всех ячеек вместо одного

- (void)tableView:(UITableView *)tableView willDisplayCell:(ChatTableCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 


    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 

     cell.alpha = 0.3; 

    }); 



} 

Проблема здесь в том, что каждый раз, когда я добавить новую ячейку все остальные клетки сброс значения альфа и все новые ячейки + старые ячейки будут изменены в одно и то же время. Пожалуйста, помогите мне обновить каждую ячейку и не дать ей сбросить альфа старых клеток, потому что мы добавляем новую ячейку.

, что я делаю: Каждая ячейка создана должна меняться от полного альфа до 0,3 через 3 секунды, но то, что происходит в том, что клетки, которые были созданы и изменены на 0,3 альфа получить отдохнули на полную альфа снова когда я добавляю больше ячеек ...

+0

Вы пытаетесь установить альфу для всех ячеек, которые будут отображаться. Попробуйте сбросить значение альфа всех видимых ячеек, а затем установить конкретную клеточную альфу, но если вы очистите то, что вы хотите достичь, я могу вам помочь. – iphonic

+0

«Каждая созданная ячейка должна измениться с полной альфы до 0,3 через 3 секунды, но происходит то, что ячейки, которые были созданы и изменились на 0,3 альфа, снова покоятся на полную альфа ...» Я пытаюсь избежать этого – user1341993

+0

Вы устанавливаете альфа-группу в другом месте? Потому что, когда я пытался, что вы делали, я получаю такое поведение, которое вы хотите. Только новые клетки появляются с альфа-1 и получают 0,3 через 3 секунды. Старые ячейки остаются на 0,3 – joern

ответ

0
- (UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath 
      { 
       static NSString *MyIdentifier = @"MyIdentifier"; 

       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

       if (cell == nil) 
       { 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                reuseIdentifier:MyIdentifier]; 
       } 
       //if you are adding the item at the and of your array do this otherwise change the code in the if line 

       if(indexPath.row == array.count - 1){ 
       dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 

        cell.alpha = 0.3; 

       }); 
      } 
+0

каждый раз, когда я вызываю ll [_tableView reloadData]; он снова вызван – user1341993

+0

Проверьте альфу в cellForRowAtIndexPath также! –

+0

Извините за то, что вы сделали это очень сложно, но не могли бы вы показать мне, что это просто, с этим, я действительно ценю, что вы уделили время, но, например, с этим, поэтому я могу следить за ним и понимать его. – user1341993

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