即使表只包含几行,也可以将UITableView行滚动到顶部

时间:2010-06-19 07:18:22

标签: iphone cocoa-touch uitableview

我有一个UITableView,有时只有几行。我想要一个特定的行,例如第3个中的第2个出现在桌子的顶部。但是,当行数没有填满整个表时,调用以下内容无效:

[TableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:indexOfTopItem inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO]

即使表中的行数有限,我是否有办法强制行显示在顶部?谢谢

3 个答案:

答案 0 :(得分:0)

实现此目的的唯一方法是设置表的contentOffset。这将确保所需的行显示在表格的顶部,即使行没有填满整个表格。

答案 1 :(得分:-1)

重新排列订单,或者有一个显示之前日期的按钮。您可以使用numberOfRowsInSection方法检查BOOL,然后设置正确的行数。然后在cellForRowAtIndexPath方法中,再次检查BOOL,并返回有效的单元格。按下按钮,设置BOOL,并调用tableView的reloadData方法。

答案 2 :(得分:-1)

我不确定我到底知道你想要什么,但是如果你想在桌子的顶部放置一个特定的单元格,为什么不重新排列数据而不是视图呢?

假设您的单元格(行)数据未经过硬编码,您可以执行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([indexPath row] == 0){
        // Load the data you want to appear at the top
    }else {
        // Load the rest of the data
    }
}

您必须手动跟踪顶行数据,但这可能不是最佳解决方案。

或者,如果您的数据在数组中,您可以将顶部所需的元素与数组中的第一个元素交换,然后调用[myTableView reloadData]重新加载数据。在这种情况下,您不必更改cellForRowAtIndexPath。

当然这不是非常有效,因为你正在操作数组并重新加载你的表,但是如果你的表只有几行而你不需要经常交换,那么它可能是可以接受的。