是否可以使 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
你会得到这个:
部分数量:
单元格 1(以前看起来像标题的单元格default
(= 1) 每节单元格数:2 Header + 2*2 Cells = 6Section 1
) 单元格 2(“正常单元格”之前为Cell 1a
) 细胞 3(“正常细胞”以前Cell 1b
) 单元格 4(以前看起来像标题的单元格Section 2
) 单元格 5(“正常单元格”之前为Cell 2a
) 细胞 6(“正常细胞”以前Cell 2b
)
像这样,您的标题单元格不会滚动,并且在您的 tableView:cellForRowAtIndexPath:
方法中,您需要根据 indexPath
决定选择哪个“单元格模板”。
更新:
另一个选项是将 tableview 样式更改为分组。那里的标题也不会粘在顶部。
【讨论】:
以上是关于是否可以使 tableview 部分标题与普通 tableview 中的单元格一起滚动?的主要内容,如果未能解决你的问题,请参考以下文章
是否存在与 editActionsForRowAtIndexPath 相反的 tableView 函数?