使TableHeaderView不滚动

时间:2015-08-01 18:43:01

标签: swift uitableview cells tableheader

我制作了一个带有原型细胞的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
    }
}

结果就是这个(这是一个测试): screenshot

现在我想让TableHeaderView不与tableView一起滚动;我把tableView样式做成了简单的;我发现了这个Change Default Scrolling Behavior of UITableView Section Headerhttps://corecocoa.wordpress.com/2011/09/17/how-to-disable-floating-header-in-uitableview/,但我不知道Objective-c(我从6个月开始就是快速的程序员)。任何人都可以解决我的问题吗?

2 个答案:

答案 0 :(得分:3)

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

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

class HeaderTableViewController : UIViewController, 
                                  UITableViewDataSource, UITableViewDelegate

答案 1 :(得分:3)

我肯定会使用UIViewController和UITableView以及它上面的自定义视图(见下文)。

enter image description here

或者如果你想使用UITableViewController(带来一些额外的功能),你可以使用容器视图将它嵌入到标题下。

enter image description here