我有一个UITableview
,显示当前10行是固定的静态。现在我想在其中添加一个功能。当用户到达UITableView
的最后一行时,我想向表中添加10行。我的意思是目前我在应用程序中显示固定的10行。
但是现在我想在用户到达前一个UITableview
的最后一行时再添加10行。
请给我任何建议或任何示例代码以实现我的动机。提前谢谢。
答案 0 :(得分: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
委托方法(UITableView
是UIScrollView
的子类),即scrollViewDidEndScrollingAnimation:
或scrollViewDidScroll:
。这些将告诉您用户正在查看的内容的y位置。如果发现最底部的内容可见,则可以添加更多项目。
HTH,
阿克沙伊
答案 1 :(得分:12)
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
}
}
这将检测“弹跳效果”,例如向上移动可见行以表示想要看到更多。
答案 2 :(得分:6)
您如何确切地想要调用额外10行的加载?当用户向下滚动以查看默认加载的前10个时,他可能不想再加载10个。
您可以添加“添加更多”行作为表格的最后一行。当用户点击这个时,你再添加10个。
(我不知道怎么会发现一个“弹跳效果”,比如向上移动可见行以表示想要看到更多。)
基本逻辑如下:
cellForRowAtIndexPath
中检查用户是否点击了最后一行,然后调用您的代码添加10 [myTable reloadData]
numberOfRowsInSection
的返回值增加10,并确保cellForRowAtIndexPath
将正确返回您的新行11-20 ps如果您真的想要在用户到达表格末尾时加载10个额外的行,则需要在cellForRowAtIndexPath
或willDisplayCell:forRowAtIndexPath:
中调用加载10个以上的行最后一行。
答案 3 :(得分:1)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [categoriesList count];
}
这里categoriesList是一个数组。我们可以向这个数组添加对象,并在tableview中调用reloadData。