2014-07-03 31 views
0

我必須創建一個社交應用程序,目前在用戶的新聞源中只顯示20個項目。一旦他們打的底部有一個「加載更多的按鈕,然後,這將延長穩定到下一個20個項目。iOS - 如何創建一個永不結束的滾動新聞Feed

它非常手動,而不是非常流暢,有沒有辦法來自動完成這個?

特徵是類似的Facebook和Twitter的東西,所以我知道這是可能的,但我的谷歌搜索只是採取我,因爲我不知道這個功能使用正確的術語。

任何幫助將是太棒了!

回答

1

一旦用戶接近列表的末尾,您就可以開始提取下一個項目。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger maximumNumberOfRows = [tableView numberOfRowsInSection:indexPath.section]; 
    if (indexPath.row >= maximumNumberOfRows - kReloadOffset) { 
     [self fetchNextItemsFromWebserviceWithOffset:maximumNumberOfRows]; 
    } 

fetchNextItemsFromWebserviceWithOffset可以獲取更多新聞和更新[self.tableView reloadData]您的表視圖。

+0

聽我使用indexPath.section代替indexPath.row將相同的代碼應用? – Amraj

+0

取決於您的數據模型,如果您可以通過當前部分確定用戶接近所顯示項目的末尾。 – Cornelius

+0

你也可以更新'-tableView:numberOfRowsInSection:'在飛行中(所以使用不能滾動過去沒有被加載的單元的末端,但?) –

0

使用表格視圖,只加載20或任何你需要的數量當你到滾動結束加載a nother 2O。它非常基本和簡單。您的單元格會一次又一次地被重複使用,並且它永遠不會結束,直到數據可用。

1

您可以在靠近時使用此方法獲取數據,也可以使用Mark Gibson的代碼。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat offsetY = scrollView.contentOffset.y; 
    CGFloat contentHeight = scrollView.contentSize.height; 
    if (offsetY > contentHeight - scrollView.frame.size.height - screensizehere*2) 
    { 
     if (!isCalling) 
     { 
      isCalling = YES;// when you response data change this bool to NO. 
      [self getdatainbg];//call your service. 
     } 
    } 
} 

也許這會幫助你。

-1

讓你的UIViewController類爲UIScrollViewDelegate

@interface Yourclass : UIViewController<UIScrollViewDelegate> 

/*Your getters & setters, method declarations*/ 

@end 

#pragma mark UIScrollViewDelegate & refresh for auto scroll 
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{  

    /*Auto scroll Code.. Raja implemented..*/ 

    if (([scrollView contentOffset].y + scrollView.frame.size.height) == [scrollView contentSize].height) { 
     [self performSelector:@selector(refreshPage) withObject:nil afterDelay:0.0]; 
     return; 
    } 
}