滚动时如何使tableView单元格“粘住”

时间:2018-08-03 21:44:42

标签: ios swift uitableview

我在tableView顶部的一个单元格上有一个SegmentedControl(tableView由所有静态单元格组成)...我希望顶部的单元格(和segmentedControl)“粘住”,以便始终作为用户可见在表格中滚动(请参见下面的屏幕截图)。这可能吗?

enter image description here

2 个答案:

答案 0 :(得分:0)

通常,要应用此行为,应将其添加为 header view 而不是单元格。表格视图中的标题视图会“粘住”。但是,由于您要添加静态单元格(UITableViewController),因此即使您尝试将标题视图添加到表视图中,它也不会应用粘贴行为。

作为一种解决方法,您可能需要添加一个新的UIViewController,该UIViewController的顶部包含一个视图(标题视图)和一个容器视图,如下所示:

enter image description here

答案 1 :(得分:0)

我脑海中浮现出的一种骇人听闻的解决方案是:

在VC中声明标题,或保留引用:

private var header: UIView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 40))

将其添加为tableView的子视图,并将内容插入设置为等于标题的高度。

tableView.addSubview(header)
tableView.contentInset.top = header.frame.height

如果标题使用自动版式,则需要调用 view.layoutIfNeeded()设置内容插图之前

,然后使标题始终始终位于tableView的顶部:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    header.frame.origin.y = scrollView.contentOffset.y
}