2012-02-01 18 views

cevap

12

. Bir kullanıcının altbilgiyi görmek için aşağı kaydırmadan en son satıra kayar sayısı büyük olasılıkla çok azdır. Etki aynı olacaktır, yani kullanıcı tabana doğru kaydırdığında ve daha fazla veri yüklemeniz gerektiğinde.

Bu, tableView:cellForRowAtIndexPath:'da kolayca uygulanabilir. IndexPath'in sonuncusunu takip ederek ve yeni satırlar eklendiğinde veya silindiğinde onu güncelleyerek, istenen hücrenin IndexPath'inin son satırın IndexPath ile aynı olup olmadığını ve tembel yüklemenin tetiklenip tetiklenmediğini kontrol edebilirsiniz. oradan daha fazla veri, şu anda yaptığınız gibi. senin tableFooterView Eğer

+1

Oy verdiğim için bunu bir kez uygulamıştım - bana en temiz çözüm gibi geliyor. –

+0

Şu anda şu anda yapıyorum. Ben öyle yapmaya devam edeceğim. – dhrm

+0

Ben de aynı şeyi yapıyorum ama bu en iyi yol mu? – Alupotha

0

tableFooter, dediğiniz gibi, bir UIView olduğundan, çizimi drawRect'te işleme alır:. Üzerine yazıyorsanız bir bildirim alabilirsiniz.

Düzenleme: eski yanıt hatalıydı.

1

Ayak çerçevesini pencere koordinatlarına dönüştürebilir ve bunları karşılaştırabilirsiniz. Altbilgi gizlendiğinde, Y kökü koordinatları> 480 (dikey mod için), altbilgi görüntülenince Y kökü < 480 koordinatlarını varsayar. DidScroll yönteminde karşılaştırma yapabilirsiniz.

Teşekkürler, umarım bu size yardımcı olur. Bunun yerine altbilgi görünümü tablosunun son satırı talep ediliyor size olabilir çek göstermek ve sonra verileri yükleyecektir belirlenmesinde oran

Bkz yöntemi convertRect:toView:

0

aşağıdaki değişkenlerle görünüm içine kaydırılması sırasında tam olarak hesaplayabilir, tablonun contentOffset mülkiyetinde değişiklik gözlemleyerek (ve belki de tablonun contentSize özelliğinde değiştirir) olduğu:

  • tableView.contentOffset.y - içerik görünümünün kökenli kaydırma bakış kökenli
  • tableView.contentSize.height ofset olduğu dikey bir miktar - içerik görünümü yüksekliği
  • tableView.bounds.size.height-tablo sınırları

+ masa sınırları yükseklik tablo içerik boyutu yüksekliğini aşan ofset dikey içerik, biz altbilgi görünümünde şimdi varsayabiliriz yüksekliği.

Bunu bir if deyimine sarın ve bir bildirim göndermek için kullanabilirsiniz.Sen tutar görünüm denetleyici içinde bu uygulayabilirsiniz

// Set up an observer for changes in the table's contentOffset or contentSize. 
// This can be done during initialisation of the tableFooterView 
[tableView addObserver:self 
      forKeyPath:@"contentOffset" 
       options:NSKeyValueObservingOptionNew 
       context:NULL]; 
[tableView addObserver:self 
      forKeyPath:@"contentSize" 
       options:NSKeyValueObservingOptionNew 
       context:NULL]; 

// Further down in code, listen for the changes: 
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
    change:(NSDictionary *)change context:(void *)context { 
    if ([keyPath isEqualToString:@"contentOffset"] || 
     [keyPath isEqualToString:@"contentSize"]) { 

     if((tableView.contentOffset.y + tableView.bounds.size.height) > tableView.contentSize.height){ 
      // the tableFooterView should now be in view 
      [[NSNotificationCenter defaultCenter] 
       postNotificationName:@"scrollToLoadNeedsLoad" 
           object:self]; 
      // dynamically change the footer here (ideal for making it stretch with the table) 
     } 

    } 
} 

: Burada eylem biraz kod snippet'ine

if((tableView.contentOffset.y + tableView.bounds.size.height) > tableView.contentSize.height){ 
    //send notification, dynamic resizing, etc...` 
} 

: Daha sonra alt bilgi dinamik olarak da veya başka amaçlanan etkilere germek yapmak için ileri testler yapabilir bir tabloya başvurmak veya kendi özel ScrollToLoadView'unuzun içine yerleştirebilirsiniz.

+0

Overkill. Tembel bir yükün tetiklenmesi veya tablonun son hücresi ne zaman istendiyse istenmesi gereken yoldur. – Daniel