使 TableHeaderView 不滚动

Make a TableHeaderView not scrolling

我制作了一个带有原型单元格的 TableView;在 tableView 的第一个位置我做了这个

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 0
    {
        let view : UIView = UIView(frame: CGRectMake(0, 0, 400, 140))
        view.backgroundColor = UIColor.redColor()
        view.addSubview(populateView())
        //populateView() is a method by which I programmatically made all object in the view (label, images, textView)
        return view
    }
    else
    {
        return nil
    }
}

override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
    if section == 0
    {
        return 140
    } else
    {
        return 0
    }
}

结果是这样的(这是一个测试):

现在我想让TableHeaderView不随tableView滚动;我将 tableView 样式设置为普通样式;我发现了这个 Change Default Scrolling Behavior of UITableView Section Header and this https://corecocoa.wordpress.com/2011/09/17/how-to-disable-floating-header-in-uitableview/ 但我不知道 Objective-c(我成为 swift 程序员才 6 个月)。谁能解决我的问题?

解决方案是使用 UIViewController,而不是 UITableViewController。 table 视图控制器将声明整个 view 而上面没有 space。

相反,您必须使用 UIViewController,添加一个子视图作为 header,并添加一个 UITableView 作为子视图。您可以通过显式包含数据源和委托协议来填充它并与之交互。

class HeaderTableViewController : UIViewController, 
                                  UITableViewDataSource, UITableViewDelegate

我肯定会使用带有 UITableView 和自定义视图的 UIViewController(见下文)。

或者,如果您想使用 UITableViewController(它带来了一些额外的功能),您可以使用容器视图将其嵌入 header。