IOS: заставить ячейку tableView анимировать изменение при нажатии - PullRequest
0 голосов
/ 01 декабря 2019

Я пытаюсь выполнить анимацию в ячейке при касании вспомогательного вида. Метод повернутого делегата запускается, и я могу заставить строку что-то сделать - изменить метку, но она игнорирует анимацию (или в другом случае - даже не вносит изменения). Как я могу заставить анимацию работать должным образом?

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{

    MyCustomCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

                    [UIView animateWithDuration:5.0
                                    delay: 5.0
                                    options: UIViewAnimationOptionCurveEaseIn
                                                                 animations:^{
//NEXT TWO LINES HAVE NO EFFECT ON CELL SO COMMENTED OUT
//cell.nameLabel.text = @"Thank you. FIRST ANIMATE TRY";                              
// [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
//NEXT THREE LINES CHANGE TEXT BUT WITHOUT ANIMATION
[self.tableView beginUpdates];
cell.nameLabel.text = @"Thank you. Second try!";
[self.tableView endUpdates];                                                                                
                             }
                             completion:^(BOOL finished){
                                 NSLog(@"animation finished");
                             }];     
    }

Кстати, я также пытался явно отправить это в основную очередь, но это не дало эффекта. Он уже должен быть в главной очереди.

1 Ответ

0 голосов
/ 02 декабря 2019

Прежде всего, вам не нужно звонить beginUpdates или endUpdates. Во-вторых, вы не можете анимировать изменение текстового значения метки.

Вам нужно иметь метку в ячейке и инициализировать свойство alpha равным 0,0. Когда вызывается accessoryButtonTappedForRowWithIndexPath, установите для свойства alpha значение 1.0 внутри блока анимации.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    AwesomeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.thankYouLabel.text = @"Thank you";
    cell.thankYouLabel.alpha = 0.0;
    return cell;
}

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    AwesomeCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [UIView animateWithDuration:1.0 animations:^{
        cell.thankYouLabel.alpha = 1.0;
    }];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...