2011-03-09 11 views
5

Mam kontroler UITableViewController, który zapełnia UITableView z niektórych danych, które mogę pobrać z sieci. Dane dla każdej komórki składają się również z obrazu używanego jako tło, które pobieram w oddzielnej NSOperacji dodanej do NSOperationQueue z MaxConcurrentOperationCount ustawionym na 4. Jeśli obraz nie jest pobrany, pokazuję ogólny symbol zastępczy, który Chciałbym zastąpić (zaniknięcie/zanikanie) pobranym obrazem po jego pomyślnym pobraniu.Animacja zaniku UITableViewCell

Używam następujący kod umieszczony wewnątrz cellForRowAtIndexPath UITableViewController.

[UIView beginAnimations:@"fade" context:nil]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:3.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
cell.placeholderUIImage.alpha = 0.0; 
cell.backgroundUIImage.alpha = 1.0; 
[UIView commitAnimations]; 

To jest niestety tylko działa losowo na kilka wierszy, ponieważ dla większości obraz tła jest ustawiony natychmiast, jakby animacja rozpoczęła się na jednej komórki byłby „nadpisane” przez następne wezwanie beginAnimations .

Odpowiedz

8

UITableView posiada wbudowane wsparcie dla przeładunku wiersz z zanikającym animacji, zadzwoń [tableView reloadRowsAtIndexPaths:... withRowAnimation:UITableViewRowAnimationFade] i upewnić się, że cellForRowAtIndexPath nie zwraca instancję UITableViewCell, który jest już w tabeli.

+0

Wygląda na to, że musi zostać wywołany po ukończeniu układu widoku tabeli. – shiami

+0

Jakiś fragment kodu, proszę? –