2011-06-08 20 views
8

Bir UITableview animasyonunun tamamlanmasının ardından nasıl harekete geçebilirim?IOS UITableview Tablo animasyonları tamamlandıktan sonra nasıl harekete geçilir?

UITableview hücresini küçültmeyi ve büzülmeden sonra görünmeyen hücrenin alt görünümünü kaldırmayı deniyorum. Hücreyi daraltmak için, [tableview beginUpdates] ve [tableview endUpdates] 'i çağırıyorum ve UITableview'in theheightForRowAtIndexPath veri kaynağı yöntemi tarafından döndürülen hücrenin yüksekliğini değiştiriyorum.

Zorluk, alt görünümü kaldırmadan önce alt görüntünün görünmemesi için küçültmeyi tamamlamak için tablo görünümüne ihtiyacım var. Eğer alt tabloyu [tableview endUpdates] 'i çağırdıktan sonra (ya da öncesinde ya da arasında) alt görüntüyü kaldırmak için koya koyarsam, alt ekran çok yakında silinir (animasyon için beklemez) ve komik gözükür.

Benim düşünce ben kurulum için animasyon tamamlanmasının ardından çalışan bir geri arama yapabilmek ister ve

+3

Ben şimdiye kadar bulduğum kısa bir süre gecikme performSelector çalıştığı en iyi şey: [öz performSelector: @selector (removeSubmenuViewFromCellView) withObject: afterDelay nil: 0,3]; – kris

+1

Tamam. Sorgulama için teşekkürler – kris

cevap

19

Buna ne dersiniz?

[CATransaction begin]; 

[CATransaction setCompletionBlock:^{ 
    // animation has finished 
}]; 

[tableView beginUpdates]; 
// shrink the cells 
[tableView endUpdates]; 

[CATransaction commit]; 
+0

Öneri Rudolf için teşekkürler. Bu soru üzerinde çalıştığımdan beri bir süredir olduğu gibi, bunu gözden geçirme şansım ne zaman olacağından emin değilim. Ancak, bunun başka birinin iyi bir çözüm olduğuna dair bir yorum yapabilirse veya bunu denemek istersek, bunu cevap olarak işaretlerim. Bu arada, +1. – kris

+0

Bu iyi bir çözümdür. Sadece bir masa sırasının canlandırmasından sonra koşacak kodun gerekli olduğu yerde çalıştım. – Andrew

+2

İyi bir çözüm, bu cevap kabul edilmeli. – Bringo

-4

NSNotifications sınıfını kullanarak deneyin geri aramasında Subview kaldırmak istiyorum olduğunu. Bir şey olmak üzere olduğunda ve daha sonra bir şeyler olduğunda Mesaj Bildirimleri. 'Olmak üzere' ve 'oldu' arasında geçiş yapmak için aynı bildirim yönteminde bir boole kullanabilirsiniz.

+0

(bu yorum bir yinelenen ise affedersiniz) Anlayışım, var olan bir UITableview bildiriminin bununla ilgili olmamasıdır, bu yüzden kaydolmak yardımcı olmaz. Bildirimi kendim oluşturduğumda, bildirimin tablo görünümü tamamlandıktan hemen sonra yayınlanmasını istiyorum, ancak orijinal sorun durumları gibi, kodumu çalıştırmanın bir yolunu bilmiyorum (bir bildirim göndermek için) ya da başka türlü) bu noktada. – kris

+0

Bir bildirim göndermek çok basittir. Sadece aynı şekilde Apple belgelerini kontrol edin. Örnekle net ve kesin bir açıklama sağlanır. Görevinizle en iyisi. – SeriousSam

+0

Sadece bu bildirimlerin bu durumda yararlı olmayacağını söylüyorum :) Tüm geri bildirimler için teşekkürler! – kris

İlgili konular