我從XML解析一些數據。我希望我的表顯示前10行,然後當用戶滾動到底部並彈出表格時,它會更新(從XML加載新數據),然後顯示新行。例如,首先用戶得到10行,然後其他10,然後休息10.UITableView向下滾動並彈出時調用哪個方法?
我想知道當tableview彈跳到底部時,調用哪個方法,以及一些建議如何實現它,謝謝。
我從XML解析一些數據。我希望我的表顯示前10行,然後當用戶滾動到底部並彈出表格時,它會更新(從XML加載新數據),然後顯示新行。例如,首先用戶得到10行,然後其他10,然後休息10.UITableView向下滾動並彈出時調用哪個方法?
我想知道當tableview彈跳到底部時,調用哪個方法,以及一些建議如何實現它,謝謝。
UITableView
是UIScrollView
的子類,而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
你可以嘗試使用this simple control。實施一個loadMoreTableFooterDidTriggerRefresh:
方法,在那裏加載更多的行,然後只需撥打loadMoreScrollViewDataSourceDidFinishedLoading:
。很簡單
下面答案中的一些人給出了更準確的答案,「哪種方法被稱爲」,但是 - 這就像發明重新發明自行車一樣,我認爲使用單獨控制是正確的選擇。
謝謝Petro我會下載示例項目。 –
最好使用-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
而不是- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
。它可以防止多次調用新行加載模塊。另外,我做的。如果線路發生變化,所以它能夠與scrollViewDidEndDecelerating工作:
如果(Y> = H){
這項工作完美,謝謝!現在我想知道如何動態改變行數,我應該在section中使用numberOfRows方法嗎? –
您必須更新dataSource的數據並更新'numberOfRows',是的。 – nikans