ViewForHeaderInSection中的两个标头

时间:2017-12-20 03:44:44

标签: ios swift uitableview

我希望视图控制器顶部的两个标题在表格滚动时不会消失。

代码的第一部分显示了viewDidLoad中的顶部标题。 viewForHeaderInSection正常工作。如何将标题添加到viewForHeaderInSection

let header =  UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 100))
header.backgroundColor = UIColor.red
//header.addSubview(header)
tableView.tableHeaderView = header

/////////

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let v = UIView()
    v.backgroundColor = UIColor.white

    let segmentControl = UISegmentedControl(frame: CGRect(x: 10, y: 5, width: tableView.frame.width, height: 30))
    segmentControl.insertSegment(withTitle: "one", at: 0, animated: false)
    segmentControl.insertSegment(withTitle: "two", at: 1, animated: false)
    segmentControl.insertSegment(withTitle: "three", at: 2, animated: false)
    v.addSubview(segmentControl)
    return v
}

2 个答案:

答案 0 :(得分:0)

只需添加一个视图(segmentControl)作为另一个视图的子视图(v)。然后将其作为viewForHeaderInSection的视图返回。您必须在segmentControl和{}之间使用constraints v个实例。

不要忘记,对于segmentControl,您必须将translatesAutoresizingMaskIntoConstraints设置为false。但是,对于v实例,您应该NOT set translatesAutoresizingMaskIntoConstraints to false,因为您没有为此管理外部约束,因此tableview将为您执行此操作...

答案 1 :(得分:0)

我认为这对你有帮助:

//你的Tableview

@IBOutlet var tblviewSideMenu: UITableView!

override func viewDidLoad() {  

    super.viewDidLoad()

    let screenSize: CGRect = tblviewSideMenu.frame

    let myView = UIView(frame: CGRect(x: 0, y: 0, width: screenSize.width,height: 145))
    myView.backgroundColor = UIColor(red: 0.0/255.0, green: 88.0/255.0, blue: 181.0/255.0, alpha: 1.0)

    tblviewSideMenu.addSubview(myView)
    tblviewSideMenu.tableHeaderView = myView
    tblviewSideMenu .reloadData()
    tblviewSideMenu.tableFooterView = UIView()     
 }

注意:如果您想要两个标题添加一个视图