2012-03-16 9 views
5

UITableView, bir hücrenin yeniden düzenlendikten sonra, boş alana boş bir şekilde yerleştirileceği yerleşik bir animasyona sahiptir. Bu animasyon bittikten sonra bir çeşit bildirime girmek için bir yer var mı? Tamamlandığında bir yöntem aramak istiyorum. Şu anda iyi çalışıyor performSelector:withObject:afterDelay: kullanıyorum, ama animasyon tamamlanmış olup olmadığını bilmek istiyorum bilmek istiyorum.
Yinelemek gerekirse, özel animasyondan bahsetmiyorum, yalnızca UITableView içine yerleştirilmiş animasyon.UITableView el ile yeniden düzenlendikten sonra animasyon tamamlandı bildirimi

Çevrede araştırıyorum ve yanıt alamıyorum. Tablo görünümü veri kaynağına erişiminiz varsa, bu gerçekten kolay hale gelir.

+0

Olası kopyası: http://stackoverflow.com/questions/7198633/how-can-i-tell-when-a-uitableview-animation-has-finished – fishinear

cevap

0

Tablo görünümü hücrelerinde bir özellik belirlemeniz ve veri kaynağında bir yöntem uygulamanız yeterlidir. Ayarlamanız gereken özellik, muhtemelen daha önceden ayarladığınız

'dur. Hücre yeniden sıralanmış olan kullanıcı bültenleri, masa görünümü veri kaynağı söylemelisiniz zaman

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath; 

gerçek verileri yeniden düzenlemek için: Şimdi yapmanız gereken tüm veri kaynağındaki bu yöntemi uygulamak olduğunu. Yapmanız gereken tek şey şunun gibi, şu şekilde: şu şekilde:: Tabii ki, bu kesinlikle animasyonun sonu konuşmuyor, ama aynı olayla karşılaşıyor.

4

Bu sorunun eski olduğunu anlıyorum, ama yine de, GoGo'nun sahip olduğu aynı soruna bir cevap bulmaya çalıştığımda karşınıza çıktım. Eh, basit bir çözüm olduğunu ortaya çıkıyor. @Mitchell Vanderhoeff belirtilen ne gibi, bu satır taşımak üzere olan tableview bir bildirim almak için tableview temsilci yöntemini

- (void)tableView:(UITableView *)tableView 
     moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
     toIndexPath:(NSIndexPath *)toIndexPath { 
     [CATransaction setCompletionBlock:^{ 
      // Completion code here 
     }]; 
} 

eklemek gerekir. Anahtar olsa da CATransaction setCompletionBlock. Bu, tablonun satır hareketi için yaptığı örtülü animasyon işleminde bir tamamlama bloğu ayarlamanıza izin verecektir. Adından da anlaşılacağı gibi, bu blokta yazdığınız her şey animasyon bittikten sonra yürütülür.

Projenizin bir parçası değilse, QuartzCore çerçevesini eklemeniz gerekir.

İlgili konular