2011-07-21 13 views
9

Kullanıcının bazı ek şeyler yapabilmem için bir UITableView'ın altına kaydırılıp kaymayacağını bulmaya çalışıyorum. İşleri düzgün bir şekilde hesaplayabilmek için UITableView’un görünür rektini almam gerekiyor. Bunu nasıl başarabilirim?UITableView'ın görünür rectini nasıl alabilirim?

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

    [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView]; 

    int currentMaxPosition = CGRectGetMaxY([self.tableView visibleRect]); 
    int currentMinPosition = CGRectGetMinY([self.tableView visibleRect]); 

    int tableViewBottom = [self.tableView bounds].size.height - 100; 
    int tableViewTop = 0; 

    //get older messages once we're near the bottom 
    if (currentMaxPosition > tableViewBottom - 100) 
    { 
     NSLog(@"WE AT THE BOTTOM!"); 
    }  

} 

cevap

2

Sen tableView indexPathsForVisibleRows] içinde veya görünür hücreyi almak ve kullanıcı altına kaydırılacağı olmadığını belirlemek için [tableView visibleCells] kontrol edebilir.

+0

Visiblecell'e dayanarak, kullanıcının en altta olup olmadığını nasıl belirleyebilirim? –

+0

'- (NSArray *) indexPathsForVisibleRows'un bu satırlar için –

0
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ 

     int i=0; 

     i=indexPath.row; 

     int count=[urTablearray count]; 

     if (count == (++i)) { 

       //do ur stuff here 

     } 


    } 
+0

dizin satırlarını almasını, kodun derlenmediğini, indexPath.row gibi bir salt okunur özniteliğini değiştiremezsiniz. –

+0

çek dışarı şimdi ............... –

+0

o ben teşekkür, arıyordu o –

0

Aşağıya geldiğinizde daha fazla hücre yüklemek istiyorsanız, bu post'u deneyin. Ayrıca kullanabilirsiniz

- (NSInteger)numberOfSections 

- (NSInteger)numberOfRowsInSection:(NSInteger)section 

:

- (NSArray *)indexPathsForVisibleRows 

endeks yolları anlamaya

Temelde kaç satır kaç vb bölümler, kullanım tablo görünümünde, şu anda biliyorum

01: altına yakın hücrelerin ..

Daha sonra aşağıdaki UITableViewDelegate yöntemi kullanın

ve indexPath değeri kullanın ve "yakın" alt endeksler ile karşılaştırın. Alt tarafa yakınsa, daha fazla içerik yüklemek gibi bazı işlemler yapın.

Bazı uygulamalar manually load additional content için "... Daha fazla yükle" özel bir hücre var. Bu yaklaşım ilerlemekten daha kolaydır ve uygulamanızda 'daha fazla içerik yükleme' işlevini doğrular.

18

A, mesela UITableView sadece UIScrollView alt sınıf, yani her zamanki UIScrollView yöntemleri uygulamak Bir UITableView görünür rect sadece kendi sınırları geçerli:

visibleRect kökeni basitçe contentOffset
CGRect visibleRect = [myTableView bounds]; 

, yani kullanabileceğiniz başka bir yaklaşımdır:

CGFloat distanceFromBottom = [self.tableView contentSize].height - [self.tableView contentOffset].y; 
+0

çalışmış veya değil! –

+0

Tam olarak ne yazdırırken distanceFromBottom daima 0'dır –

+0

Mükemmel. '- [UITableView sınırları]' bir sebepten dolayı tablo görünümünün görünür rektine ihtiyaç duyar ancak tam uzunluğu (görünmez satırlar içerecektir) içerik rect'i (bu durumda '- [UITableView frame]') kullanılırsa mükemmeldir. –

2

ben bir görüntü göstermeye çalıştığını Bir hücreye dokunduğumda ve bunu göstermek için çerçeveyi bulmak istediğimde (tablo görünümünün geçerli konumunu al).

aşağıdaki kullanılan ve işe yaradı:
//originalImageViewFrame is the CGRect that I use for my new view that I want to add to the view. 
    originalImageViewFrame.origin = CGPointZero; 
    originalImageViewFrame.size = self.tableView.contentSize; 

o yardımcı Umut.

İlgili konular