2011-08-24 33 views
4

我有一個UITableview,它顯示了目前固定爲靜態的10行。現在我想添加一個功能。當用戶到達UITableView的最後一行時,我想向表中添加更多10行。我的意思是目前我在應用程序中顯示固定的10行。如何在用戶到達UITableView的最後一行時動態添加行?

但是現在我想在用戶到達前一個UITableview的最後一行時再添加10個行。

請給我任何建議或任何示例代碼來實現我的動機。提前致謝。

回答

6

你會如何確切地想要調用額外的10行的加載?當用戶只是向下滾動查看默認加載的前10個時,他可能不想再加載10個。

您可以添加一個「添加更多」行作爲表格的最後一行。當用戶點擊這個你添加10多個。

(我不知道怎麼一會檢測像上移的可見行表示一個希望看到更多的是「反彈效應」。)

的基本邏輯是這樣的:

  1. cellForRowAtIndexPath您檢查用戶是否在最後一行點擊,然後調用你的代碼中添加10
  2. 實際添加10個行你必須調用[myTable reloadData]
  3. 但你打電話之前,你需要增量值ASE 10和numberOfRowsInSection返回值確保cellForRowAtIndexPath會正確地返回新線11-20

ps的,如果你真的要加載的10個額外的行,當用戶達到你所需要的表的末尾當調用最後一行時調用cellForRowAtIndexPathwillDisplayCell:forRowAtIndexPath:中的另外10個加載。

1
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [categoriesList count]; 
} 

這裏categoriesList是一個數組。我們可以添加對象到這個數組,並在tableview中調用reloadData。

15

其實很簡單。你需要做的是實現tableView:willDisplayCell:forRowAtIndexPath:方法,該方法屬於UITableViewDelegate協議。每次單元即將顯示時,此方法都會觸發。所以,它會讓你知道什麼時候最後一個單元即將被顯示。然後,你可以做一些喜歡 -

– (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *) cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row == [self.array count] - 1) //self.array is the array of items you are displaying 
    { 
      //If it is the last cell, Add items to your array here & update the table view 
    } 
} 

另一個(有點數學)選項是實現UIScrollView委託方法(UITableViewUIScrollView一個子類),即scrollViewDidEndScrollingAnimation:scrollViewDidScroll:。這些將讓您知道用戶正在查看的內容的y位置。如果發現最底部的內容可見,則可以添加更多項目。

HTH,

阿克沙伊

12

uitableviewuiscrollview的。爲了達到你的目標,你需要實現scrollViewDidEndDecelerating

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height; 
    if (endScrolling >= scrollView.contentSize.height) 
    { 
     // your code goes here 
    } 
} 

這將檢測像上移的可見行表示一個希望看到更多的是「反彈效應」。

+0

聰明的解決方案,但我認爲檢測到你在cellForRowAtIndexPath中的最後(或最後一個x)單元格更好。這樣,您就不會等到您經過最後一個單元才能加載更多數據。 – rickerbh

+0

偉大的解決方案! – DeZigny

+0

真的很棒的解決方案 – UnderGround

相關問題