2010-03-01 16 views
12

UITableView öğesini bir animasyonla belirli bir konuma nasıl kaydırırım? iPhone SDK - UITableView programlı olarak animasyonla nasıl kaydırılır?

Şu anda bir pozisyona geçmek için bu kodu kullanıyorum:

//tableController -> viewDidLoad 
[self.tableView reloadData]; 
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0]; 
[self.tableView scrollToRowAtIndexPath:indexPath 
         atScrollPosition:UITableViewScrollPositionTop 
           animated:YES]; 

bu kodla sorun masaya doğru herhangi animasyon olmadan doğru pozisyona atlar olmasıdır. Animasyonu etkinleştirmek veya süreyi ayarlamak için herhangi bir yolu var mı?

Yardımlarınız için teşekkür ederiz.

cevap

0

Ben Araştırmak için iki öneri:

  1. Eğer simülatörü veya iPhone kendisinde uygulamanızı çalıştırıyor musunuz? Bazı animasyonların simülatörde farklı davrandığını fark ettim.

  2. Şu anda scrollToRowAtIndexPath: atScrollPosition öğesini çağırmak mümkün mü? Bu, animasyonu 'karıştırabilir'. Belirli bir olayı işlerken bu işlevi yalnızca bir kez çağırmalısınız.

+0

Cevabınız için teşekkür ederiz. Aygıtta kodu çalıştırıyorum ve bu kodu viewDidLoad yönteminde çağıracağım. – dan

+0

Bu, herhangi bir sebepten dolayı, viewDidLoad'dan bir animasyon başlatılamayabilir çünkü bu, görünümün ilklendirmesinin bir parçasıdır. Tam olarak bunun neden olduğunu bildiğimi söylemiyorum ama mantıklı geliyor. NSRunLoop'un performSelector ile bir etkinlik planlamaya çalışın ve bu çağrıldığında kaydırma işlemini yapın. – richb

5

Aramak için reloadData numaralı telefonu arayın. Sorunuzu doğru anlıyorsam ve viewDidLoad numaralı telefondaysanız, yine de aramanıza gerek yoktur.

Ayrıca, yalnızca görüntü denetleyicisini zorlamayı bitirdiyseniz, animasyonlu kaydırma yapmazsınız. viewDidLoad'un çağrıldığı ve animasyonunuz başladığında, bir gecikme (ikinci çeyrekte iyi işler buldum) eklemeniz gerekecek. Böyle bir doğrulama yapabilir,

-(void) viewDidAppear:(BOOL)animated{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0]; 
    [self.tableView scrollToRowAtIndexPath:indexPath 
        atScrollPosition:UITableViewScrollPositionTop 
          animated:YES]; 

} 

bu yalnızca bir kez denir emin olmak için::

23

Benim için çalışıyor

if(!isInitialized){ 
    isInitialized = YES; 
    .... 
} 
0

Çok geç belki biliyorum ama Belki başkalarına yardımcı olur, şimdi bir tabloyu sadece [tableView scrollsToTop] ile kaydırabilirsiniz.

İlgili konular