我正在尝试使用类似于tweeter app的类似功能的应用。
我有一个包含10个单元格的表格视图,我希望当我向下滚动并到达第5个单元格时,表格视图会向当前视图添加另外10个单元格,依此类推。
通过运行一个返回10个元素数组的方法来设置这些单元格的内容,我用它来填充新单元格。
我不知道如何在当前表格视图中添加更多单元格以及如何检查何时到达第5个单元格或所有当前单元格的末尾,以便自动添加一组新的10个单元格。
我在想我将使用[tableView reloadData]重新填充tableview,在我知道我已经到达所有当前单元格的末尾之后我会调用它,但我不知道如何检查我达到了目的。
有什么想法吗?是否可以检查我何时到达表格视图的所有单元格的末尾?
答案 0 :(得分:4)
UITableView
只是UIScrollView
的子类,因此您可以实现UIScrollViewDelegate
函数并在其中执行任何操作。
您可以实施
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
委派功能并检查是否到达表的末尾
if (scrollView.contentOffset.y + scrollView.frame.size.height == scrollView.contentView.frame.size.height)
{
...
}
应该这样做,或者如果你想稍早开始添加新行,那么只需减去一些点。
答案 1 :(得分:1)
答案 2 :(得分:1)
有许多开源项目在做这件事。要查找它们,您可以转到http://www.cocoacontrols.com/并搜索“刷新”或“拉动刷新”或“tableview”。
其中许多项目都提供了有关如何将它们与tableview一起使用的示例
答案 3 :(得分:1)
使用滚动视图委托获取滚动方向(如果使用表视图将调用)
#pragma mark:scrollView delegate
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
offset=scrollView.contentOffset.y;
offsetx=scrollView.contentOffset.x;
DLog(@"%f",offset);
}
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
DLog(@"%f************%f",offset,sender.contentOffset.y);
if(offset>sender.contentOffset.y)
{
directionUp=NO;
}
else {
directionUp=YES;
}
}
然后使用此tabe视图委托方法
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(directionUp&&(indexPath.row>dataSource.count-3))
{
[self performSelector:@selector(appendTableView) withObject:nil afterDelay:0.1f];// appendTableView fetches next ten data element
}
}