2010-06-26 29 views
28

Herhangi biri bana UITableView animasyon sorunu ile yardımcı olabilir mi?UITableView hücre ekle Animasyon

Varsayılan olarak, UITableView numaralı telefondan hücreleri silme ve hücreleri yeniden sıralamak için animasyonumuz var.

Nasıl yapılacağı varsa, eklenmiş hücreyi canlandırabilir miyiz.

Ben masa MyProfile> Retweet'ler altında animasyon genişletmek çıkarmış nasıl twitter alamadım vermedi three20'yi dışarı kontrol ettirin.

Three20 frameowrk, olmadan mevcut animasyonu UITableView kullanarak denemek istersiniz.

[self.dataSource addObject:@"New Item"]; 
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[self.dataSource count]-1 inSection:0]; 
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade]; 

Not: veri kaynağı sayısından 1 çıkarılır self.dataSource bir değişken dizisi olma ve masa sadece 1 kesite sahip olan

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

Örnek:

cevap

60

Aşağıdaki UITableView yöntemi kullanabilirsiniz NSIndexPath sıfır endeksli olduğundan. Tablo görünümünde

var myArray = ["Cow", "Camel", "Sheep", "Goat"] 

Aşağıdaki tablo görünümünün üst kısmında animasyon ile bir satır katacak veri kaynağı

+0

kod için teşekkürler, bana bir çalışma örneği verebilir misiniz? o Ekleme yaparken veri kaynağının nasıl güncelleneceği konusunda biraz kafam karıştı. – Ameya

+0

daha önce sadece veri kaynağına (NSMutableArray) bir kayıt ekleyerek [self.tableView reloadData] çağırıyordum; Ancak bu, yeni öğeye animasyonu getirmeyecek. – Ameya

+1

ur kodunda küçük bir değişiklik @JK plz cevabınızı düzenleyin, umarım bu tür bir çözüm aramaya yardımcı olur. [tableView insertRowsAtIndexPaths: [NSArray dizisiWithObjects: [NSIndexPath indexPathForRow: [self.dataSource count] inSection: 0], nil] ileRowAnimation: UITableViewRowAnimationRight]; – Ameya

10

Swift

Örnek dizisi.

// add item to current array 
myArray.insert("Horse", atIndex: 0) 

// insert row in table 
let indexPath = NSIndexPath(forRow: 0, inSection: 0) 
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) 

Çoklu güncellemeler

sonra birden girmeler ve/veya silmeleri yapmak beginUpdates() ve endUpdates() onları çevreleyen gerekiyorsa.

tableView.beginUpdates() 
tableView.insertRowsAtIndexPaths([addIndexPath1, addIndexPath2, ...], withRowAnimation: .Fade) 
tableView.deleteRowsAtIndexPaths([deleteIndexPath1, deleteIndexPath2, ...], withRowAnimation: .Fade) 
tableView.endUpdates() 

Ayrıca okuma

+1

Ben eklediğiniz satırları eklemek için kodunuzu kullanıyorum, ne tür bir animasyon türü olursa olsun her zaman aynı şekilde animasyonlar (örneğin solmaya, botom, sol, hepsi aynı davranışı var) . Bunun neden olduğu hakkında bir fikrin var mı? –

+0

@GeorgeAvgoustis, bir süredir bunun üzerinde çalışmadım, bu yüzden bilmiyorum. Kontrol edilecek şeyler listeme koyacağım ama bir süreliğine buna ulaşamayabilirim. Önce bunu anlarsanız, lütfen başka bir yorum bırakın. – Suragch

0

Kullanım reloadRowsAtIndexPaths: indexPath

ben bu size yardımcı olacağını umuyoruz
tableView.beginUpdates() 
    [tableView reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationAutomatic]; 
    tableView.endUpdates() 

..

İlgili konular