2013-12-08 36 views
0

我從XML解析一些數據。我希望我的表顯示前10行,然後當用戶滾動到底部並彈出表格時,它會更新(從XML加載新數據),然後顯示新行。例如,首先用戶得到10行,然後其他10,然後休息10.UITableView向下滾動並彈出時調用哪個方法?

我想知道當tableview彈跳到底部時,調用哪個方法,以及一些建議如何實現它,謝謝。

回答

4

UITableViewUIScrollView的子類,而UITableViewDelegate符合UIScrollViewDelegate。因此,您附加到表視圖的代表將獲得諸如scrollViewDidScroll:之類的事件,並且您可以在表視圖上調用諸如contentOffset之類的方法來查找滾動位置。

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView { 
    CGPoint offset = aScrollView.contentOffset; 
    CGRect bounds = aScrollView.bounds; 
    CGSize size = aScrollView.contentSize; 
    UIEdgeInsets inset = aScrollView.contentInset; 
    float y = offset.y + bounds.size.height - inset.bottom; 
    float h = size.height; 
    // NSLog(@"offset: %f", offset.y); 
    // NSLog(@"content.height: %f", size.height); 
    // NSLog(@"bounds.height: %f", bounds.size.height); 
    // NSLog(@"inset.top: %f", inset.top); 
    // NSLog(@"inset.bottom: %f", inset.bottom); 
    // NSLog(@"pos: %f of %f", y, h); 

    float reload_distance = 10; 
    if(y > h + reload_distance) { 
     NSLog(@"load more rows"); 
    } 
} 

通過neoneye

+0

這項工作完美,謝謝!現在我想知道如何動態改變行數,我應該在section中使用numberOfRows方法嗎? –

+0

您必須更新dataSource的數據並更新'numberOfRows',是的。 – nikans

2

你可以嘗試使用this simple control。實施一個loadMoreTableFooterDidTriggerRefresh:方法,在那裏加載更多的行,然後只需撥打loadMoreScrollViewDataSourceDidFinishedLoading:。很簡單
下面答案中的一些人給出了更準確的答案,「哪種方法被稱爲」,但是 - 這就像發明重新發明自行車一樣,我認爲使用單獨控制是正確的選擇。

+0

謝謝Petro我會下載示例項目。 –

2

最好使用-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView而不是- (void)scrollViewDidScroll:(UIScrollView *)aScrollView。它可以防止多次調用新行加載模塊。另外,我做的。如果線路發生變化,所以它能夠與scrollViewDidEndDecelerating工作:

如果(Y> = H){

相關問題