是否可以使 tableview 部分标题与普通 tableview 中的单元格一起滚动?

Posted

技术标签:

【中文标题】是否可以使 tableview 部分标题与普通 tableview 中的单元格一起滚动?【英文标题】:Is is possible to make tableview section headers scroll with the cells in a plain tableview? 【发布时间】:2009-08-30 04:36:54 【问题描述】:

在分组的表格视图中,部分页眉和页脚随单元格滚动。但是,在普通的 tableview 中,它们固定在屏幕的顶部和底部,直到到达下一个部分。

有没有办法覆盖这个动作,让页眉和页脚随着普通表格视图中的单元格滚动?

谢谢!

【问题讨论】:

【参考方案1】:

在一个普通的 tableview 中,我很确定您无法更改部分标题的滚动方式。

但是,您也许可以获得类似的效果。如果您省略部分标题,而是将标题放入部分的第一个单元格,那么它肯定会按照您想要的方式滚动。

然后你必须做一些工作来使第一个单元格看起来是一个标题,而不仅仅是另一个单元格。这将包括委托功能,例如:

为了防止“标题”单元格被选中:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;

更改“标题”单元格的外观:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

【讨论】:

这是唯一的解决方案。有点糟糕,你不能改变它。【参考方案2】:

是的。我认为您正在考虑的标题是部分标题/索引,它们会一直停留在单元格上,直到下一部分替换当前部分。

当您向下滚动时,我正在考虑的页眉会立即滚出屏幕,并且在最后会看到一个类似的页脚。这是我用来设置标题的代码:

- (void)viewDidLoad 
    [super viewDidLoad];
    highScoreData = [HighScoreData get];
    highScoresTable.tableHeaderView = highScoresTableHeaderView;

highScoresTableHeaderView 是一个简单的视图 (IBOutlet),在我的 .xib 中有一些标签。

@property (nonatomic, retain) IBOutlet UIView   *highScoresTableHeaderView;

【讨论】:

谢谢,但我需要这些作为节标题。知道这是否可能吗? 你应该让一个单元格成为你的标题。在 cellForRowAtIndexPath 中,检查 indexpath。如果您位于一节的末尾或一节的开头,则将该单元格用作标题。不要忘记将单元格计数增加这些标题单元格的数量。然后添加代码以防止突出显示这些单元格或选择它们。【参考方案3】:

如果您不希望您的标题粘在顶部,您应该为您的标题使用“正常”UITableViewCells

所以不要这样:

部分数量:2 每节单元格数:2

第 1 节 细胞 1a 细胞 1b 第 2 节 细胞 2a 细胞 2b

你会得到这个:

部分数量:default (= 1) 每节单元格数:2 Header + 2*2 Cells = 6

单元格 1(以前看起来像标题的单元格 Section 1) 单元格 2(“正常单元格”之前为 Cell 1a) 细胞 3(“正常细胞”以前 Cell 1b单元格 4(以前看起来像标题的单元格 Section 2) 单元格 5(“正常单元格”之前为 Cell 2a) 细胞 6(“正常细胞”以前 Cell 2b

像这样,您的标题单元格不会滚动,并且在您的 tableView:cellForRowAtIndexPath: 方法中,您需要根据 indexPath 决定选择哪个“单元格模板”。

更新:

另一个选项是将 tableview 样式更改为分组。那里的标题也不会粘在顶部。

【讨论】:

以上是关于是否可以使 tableview 部分标题与普通 tableview 中的单元格一起滚动?的主要内容,如果未能解决你的问题,请参考以下文章

是否存在与 editActionsForRowAtIndexPath 相反的 tableView 函数?

如何获取 tableView 部分标题

tableView:cellForRowAtIndexPath:不仅为可见单元格调用吗?

使用部分时是否可以使用固定的uitableview标头?

更改 UITable 部分背景颜色而不丢失部分标题

CoreData 与 tableView 部分