iPhone: как остановить анимацию в представлении до его выделения - PullRequest
0 голосов
/ 23 марта 2010

Я добавил пользовательскую анимацию в UITableViewCells. Каждая ячейка имеет свою анимацию. Когда я открываю представление, анимация продолжается, и я получаю неверную ошибку exec, потому что анимация пытается получить доступ к освобожденным ячейкам.

Как остановить анимацию до того, как представление будет освобождено?

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {  
    self.Currentcell = [tableView cellForRowAtIndexPath:indexPath];
    [UIView beginAnimations:@"fade" context:nil];
    [UIView setAnimationDuration:0.4];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [self.Currentcell.accessoryView viewWithTag:1].alpha = 0;
    [self.Currentcell.accessoryView viewWithTag:2].alpha = 1;
    [UIView setAnimationDidStopSelector:@selector(animationEnded:finished:context:)];
    [UIView setAnimationDelegate:self];
    [UIView commitAnimations];
}

- (void)animationEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {  
    [UIView beginAnimations:animationID context:context];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [cell.accessoryView viewWithTag:1].alpha = 1;
    [cell.accessoryView viewWithTag:2].alpha = 0;
    [UIView commitAnimations];
}

Ответы [ 2 ]

1 голос
/ 28 марта 2010

Этот поток говорит, что commitAnimations должен сохранять ваше представление, поэтому его не следует освобождать, когда оно все еще анимируется.Может быть, вы где-то переусердствовали?Построить и проанализировать (доступно в Xcode 3.2+ afaik) может помочь обнаружить это.

0 голосов
/ 23 марта 2010

Я не знаю, как выглядит ваш анимационный код (может быть, вы могли бы опубликовать его?), Поэтому я могу только догадываться. По сути, вам, вероятно, нужно реализовать -viewWillDisappear: метод в вашем контроллере представления и остановить там все запущенные анимации.

...