Dynamic UITableView上的ContentOffset

时间:2012-05-16 02:55:47

标签: objective-c cocoa-touch uitableview contentoffset

我已经将“加载”单元硬编码为我的表视图的最后一个单元格,当生成此单元时,我调用一些方法从Web服务加载新数据,当我得到响应时保存数据,发送通知并在我的表视图上调用reloadData。

我想做同样的事情,但是对于我桌子的第一个单元格。

我的表格与时间有关,因此向下滚动会显示较晚日期的项目,其目的是让用户向上滚动并加载较早的项目。

我似乎无法成功设置初始偏移量来隐藏此加载单元格,因为如果显示它,那么它当然会开始加载早期数据。我知道scrollToRowAtIndexPath:atScrollPosition:animated:但我找不到合适的地方来调用它(使用索引路径:1:0第1行第0节)。

正如我之前提到的,我需要在调用任何单元格之前设置此可见部分。

有没有人在表格视图的开头尝试过这种单元格?

如何在第一个单元格被加载之前设置表格视图的初始可见部分?

我应该在这里做些什么吗?就像有一个tableviewHeader,当显示时我在索引路径0:0处插入一行,这是加载器,并在我reloadTable后删除它?

1 个答案:

答案 0 :(得分:5)

我使用了contentInset,而不是viewDidLoad中的偏移量。

[self.tableView setContentInset:UIEdgeInsetsMake(-50,0,0,0)];

当生成索引路径[0,0]的行时,我重置了插入,这发生在tableView:cellForRoWAtIndexPath:

[self.tableView setContentInset:UIEdgeInsetsMake(0,0,0,0)];

每次在表视图上传递reloadData之前,我都会重新插入内容:

- (void)reload{
    [self.tableView setContentInset:UIEdgeInsetsMake(-50,0,0,0)];
    [self.tableView reloadData];
}

这意味着我的加载单元格只能在查看时坐在屏幕上,当新数据进入并且表格重新加载时我将偏移量放回去。