我有一個UITableview
,它顯示了目前固定爲靜態的10行。現在我想添加一個功能。當用戶到達UITableView
的最後一行時,我想向表中添加更多10行。我的意思是目前我在應用程序中顯示固定的10行。如何在用戶到達UITableView的最後一行時動態添加行?
但是現在我想在用戶到達前一個UITableview
的最後一行時再添加10個行。
請給我任何建議或任何示例代碼來實現我的動機。提前致謝。
我有一個UITableview
,它顯示了目前固定爲靜態的10行。現在我想添加一個功能。當用戶到達UITableView
的最後一行時,我想向表中添加更多10行。我的意思是目前我在應用程序中顯示固定的10行。如何在用戶到達UITableView的最後一行時動態添加行?
但是現在我想在用戶到達前一個UITableview
的最後一行時再添加10個行。
請給我任何建議或任何示例代碼來實現我的動機。提前致謝。
你會如何確切地想要調用額外的10行的加載?當用戶只是向下滾動查看默認加載的前10個時,他可能不想再加載10個。
您可以添加一個「添加更多」行作爲表格的最後一行。當用戶點擊這個你添加10多個。
(我不知道怎麼一會檢測像上移的可見行表示一個希望看到更多的是「反彈效應」。)
的基本邏輯是這樣的:
cellForRowAtIndexPath
您檢查用戶是否在最後一行點擊,然後調用你的代碼中添加10[myTable reloadData]
numberOfRowsInSection
返回值確保cellForRowAtIndexPath
會正確地返回新線11-20ps的,如果你真的要加載的10個額外的行,當用戶達到你所需要的表的末尾當調用最後一行時調用cellForRowAtIndexPath
或willDisplayCell:forRowAtIndexPath:
中的另外10個加載。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [categoriesList count];
}
這裏categoriesList是一個數組。我們可以添加對象到這個數組,並在tableview中調用reloadData。
其實很簡單。你需要做的是實現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
委託方法(UITableView
是UIScrollView
一個子類),即scrollViewDidEndScrollingAnimation:
或scrollViewDidScroll:
。這些將讓您知道用戶正在查看的內容的y位置。如果發現最底部的內容可見,則可以添加更多項目。
HTH,
阿克沙伊
uitableview
從uiscrollview
的。爲了達到你的目標,你需要實現scrollViewDidEndDecelerating
:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height;
if (endScrolling >= scrollView.contentSize.height)
{
// your code goes here
}
}
這將檢測像上移的可見行表示一個希望看到更多的是「反彈效應」。
聰明的解決方案,但我認爲檢測到你在cellForRowAtIndexPath中的最後(或最後一個x)單元格更好。這樣,您就不會等到您經過最後一個單元才能加載更多數據。 – rickerbh
偉大的解決方案! – DeZigny
真的很棒的解決方案 – UnderGround