2013-05-16 28 views
14

UITableView için bir üstbilgi görünümü ekleyebiliyorum. Birçok uygulama (Facebook izlemek, olayları görüntülemek için) bir headerViewView, aşağıya çekildiğinde, üstbilgi görünümü koyulur ama masanın geri kalanı (UITableViewCell 's) sıçrayan vardır. Başlık yukarı kaydırıldığında kaybolur. Bu işlevselliği nasıl sağlayabilirim?Aşağı çekin zıplamadan UITableVIew üstbilgisi

Ben UITableView aşağı çektiğinde Şu anda bile headerView yanı sıçrar

+0

"Sıçrama" derken, üstbilgileri geçecek şekilde yukarı/aşağı kaydırmayı kastediyorsunuz? – Aaron

+0

Temel olarak aşağı kaydırdığımda, üstbilgi koyulur. Yukarı kaydırdığımda, başlık kaybolur. THis, TableHeaderView – KVISH

+0

Tamam - Facebook uygulamasının etkinlik tablosu görünümünü kontrol ettim. Varsayılan davranışa sahip gibi görünüyor. Tablo bölümünüzde bu bölümlerde kaç bölüm ve satır var? Belki de istediğin efekti elde etmek için yeterli değere sahip değilsin? – Aaron

cevap

32

.

Örnek (a UITableViewController alt sınıfta):

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CGFloat headerHeight = 64.0f; 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, headerHeight)]; 
    UIView *headerContentView = [[UIView alloc] initWithFrame:headerView.bounds]; 
    headerContentView.backgroundColor = [UIColor greenColor]; 
    headerContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    [headerView addSubview:headerContentView]; 
    self.tableView.tableHeaderView = headerView; 
} 

//Note: UITableView is a subclass of UIScrollView, so we 
//  can use UIScrollViewDelegate methods. 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat offsetY = scrollView.contentOffset.y; 
    UIView *headerContentView = self.tableView.tableHeaderView.subviews[0]; 
    headerContentView.transform = CGAffineTransformMakeTranslation(0, MIN(offsetY, 0)); 
} 

(bunun için bir özellik kullanmak isteyebilirsiniz, sadece scrollViewDidScroll: fiili başlık görünümünün ilk subview kullandım, basit tutmak bunun yerine.)

+1

Bu çözümün gerçek gem'i, tableHeaderView'da bir alt görünüm kullanmaktır. Bunu bir alt ekran olmadan yapmaya çalıştım ve çok garip sonuçlar aldım, bu yüzden alt ekran kilit. – levigroker

+1

Çözümün en iyisi: D –

+0

Daha sonra uygulanan üstte tableview başlığını takılıp istiyorsanız bu ermesi kod .. - (void) scrollViewDidScroll: (UIScrollView *) scrollview { CGFloat offsetY = scrollView.contentOffset.y ; UIView * headerContentView = self.tableView.tableHeaderView.subviews [0]; (offsetY> 0) { headerContentView.transform = CGAffineTransformMakeTranslation (0, offsetY); } else { headerContentView.transform = CGAffineTransformMakeTranslation (0, MIN (ofsetY, 0)); } } – g212gs

-1

tablo başlığını ayarlayabilirsiniz 2 yolu vardır: doğrudan (bu başlık parşömenlerini .tableHeaderView özelliğini kullanarak

  • - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section işlevi geçersiz kılma tabloya)

  • ile (bu başlık

  • ) bölümü ile statik kalır

O sesler siz UITableView büyük olasılıkla düzgün çalışıp çalışmadığını Sizin .tableHeaderView özelliği

+0

Bunun doğru olduğunu düşünmüyorum. Bölüm başlıklarım yukarı ve aşağı kaydırır ve siz kaydırdıkça ve başka bir bölüm başlığı yolun dışına çıkana kadar tablo görünümlerinin en üstüne yapışır. – Aaron

+0

'tableHeaderView', 'viewForHeaderInSection' her bölüme bir başlık koyarken, tüm tablonun bir üstbilgisidir. – Aaron

0

kullanmak yerine 2 yöntemi kullanmak gerekir. Bölüm üstbilgileri, Düz stil tablolarında varsayılan olarak yapışkandır. Başlığı aşağı kaydırdıkça, sonraki bölüm başlığı yolun dışına çıkana kadar UITableView çerçevesinin en üstünde kalır. Kaydettiğinizde tersi gerçekleşir. Tersine, UITableView çerçevesinin altındaki bölüm altbilgileri üzerindeki yapışkan davranışı elde edersiniz.

DÜZENLEME Misunderstood orijinal soru:

ben aradığınız yapışkan davranışı elde etmek bir bölüm başlığı yerine tablo görünümü başlığının kullanılmasını öneririm.

Verilerinizde satır içermeyen bir bölüm ekleyin ve tablo başlığı görünümünüzü bu bölüm başlığı görünümünde görüntüleyin.

Eğer başlık görünümüne bir subview eklenmesi ve Tablo görünümü üstünün ötesinde kaydırılan onun frame veya transform yani kendi contentOffset arasında y bileşeni negatif olur ayarlayarak kolayca bu etkiyi elde edebilirsiniz
+0

Bu bir bölüm başlığı değil, bir tableHeaderView – KVISH

+0

Anladım. Soruyu yanlış anladım. – Aaron

+0

Cevabım değiştirildi. – Aaron