【问题标题】:ContentOffset on Dynamic UITableView动态 UITableView 上的 ContentOffset
【发布时间】:2012-05-16 02:55:47
【问题描述】:

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

我想做同样的事情,但我的表格的第一个单元格。

我的表格是时间函数,因此向下滚动会显示较晚日期的项目,其想法是让用户滚动更高并加载较早的项目。

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

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

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

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

我应该在这里做一些更花哨的事情吗?就像有一个 tableviewHeader 一样,当它显示时,我在索引路径 0:0 处插入一行,这是加载器,并在我 reloadTable 后将其删除?

【问题讨论】:

    标签: objective-c cocoa-touch uitableview contentoffset


    【解决方案1】:

    我使用了 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];
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多