我希望视图控制器顶部的两个标题在表格滚动时不会消失。
代码的第一部分显示了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
}
答案 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()
}
注意:如果您想要两个标题添加一个视图