如何防止表格视图部分头部在滚动时卡住?

Posted

技术标签:

【中文标题】如何防止表格视图部分头部在滚动时卡住?【英文标题】:How to prevent tableview section head from sticking while scrolling? 【发布时间】:2017-11-17 22:02:30 【问题描述】:

我有一个包含许多部分的表格视图。我正在使用一个实际的 tableview 单元格,我将其出列用作自定义节标题。我遇到的问题是,当我将部分标题“粘”到表格顶部时,直到出现下一部分。

我怎样才能防止这种情况发生并真正让它像往常一样向上滚动?

这是我的代码

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    if section == 3 
        let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! HeaderTableViewCell
        return cell
    
    return UIView()

【问题讨论】:

UITableView with fixed section headers的可能重复 它有点帮助,但我不希望我的 tableview 被分组,因为它看起来不同(有点像设置应用程序)。 【参考方案1】:

执行以下步骤。

来自@IB

    选择您的 tableView 转到属性检查器 查找样式属性下拉菜单,默认为Plain 将其更改为Grouped

或者,如果您正在以编程方式创建 TableView,请使用

let tableView = UITableView(frame: YourFrame, style: .Grouped)

【讨论】:

@MassimoPavanel 我相信有一天你会为我做同样的事情:)【参考方案2】:

将 UITableViewStyle 更改为 UITableViewStyleGrouped。

【讨论】:

【参考方案3】:

UITableViewStyle 设置为UITableViewStyleGrouped,标题将随着单元格向上滚动。 和

func tableView(_ tableView: UITableView, 
heightForFooterInSection section: Int) -> CGFloat

    return 0.000001;

【讨论】:

【参考方案4】:

一些可能的解决方案:

    如果您只有一个部分,请将 Tableview Header 属性设置为您想要设置为 Section Header 的 UIView。 如果您有多个部分,请将每个部分的行数更改为(该部分的行数 + 1)并将第 0 个索引处的行作为标题。需要一些手工编码。 将您的 tableview 更改为 grouped,需要重新设计 UI,使设计看起来类似于普通的 tableview 单元格。

【讨论】:

【参考方案5】:

步骤一:去Mainstoryboard

第二步:点击你的Tableview

第三步:去Attribute Inspector

Step4:找到Style Attribute下拉框,默认为Plain

Step5:改成Grouped

【讨论】:

【参考方案6】:

您应该使用UITableViewCell 而不是UIHeaderViewCell。将节标题高度设为 0,并且对于该节中的每个第 0 个项目,显示一个带有标题的 UITableViewCell

【讨论】:

以上是关于如何防止表格视图部分头部在滚动时卡住?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 在用户更改视图时卡住

重新加载滚动视图的内容

如何防止表格视图滚动到视图后面?

CollapsingToolbarLayout正在滚动并卡住

滚动过去的内容边界时,防止 UITableView 的部分标题做奇怪的事情吗?

当您尝试放大时,CSS 滚动捕捉卡住