2017-12-20 8 views
0

Ich möchte zwei Header an der Spitze des View-Controllers, der nicht verschwindet, während die Tabelle gescrollt wird.Zwei Header in ViewForHeaderInSection

Der erste Codeabschnitt zeigt einen oberen Header an, den ich in viewDidLoad habe. Die viewForHeaderInSection funktioniert ordnungsgemäß. Wie füge ich die Kopfzeile zum viewForHeaderInSection hinzu?

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

wollen Sie 2 Ansichten hinzugefügt zusammen in ** ** ein viewForHeader? Oder möchten Sie 1 Überschrift für jeden Abschnitt und 1 Überschrift für * gesamte * Tabellenansicht? – Honey

+0

Ich möchte zwei Ansichten in einem ViewForHeader zusammengefügt werden. Vielen Dank –

+0

in 'v' können Sie zwei Unteransichten hinzufügen 1) Ihre Segmentsteuerung 2) rote Ansicht –

Antwort

0

Fügen Sie einfach eine Ansicht (segmentControl) als Unteransicht einer anderen Ansicht hinzu (v). Und dann das als Ihre Ansicht für die viewForHeaderInSection zurückgeben. Sie müssen constraints zwischen segmentControl & v Instanzen verwenden.

Und nicht vergessen, für die segmentControl müssen Sie translatesAutoresizingMaskIntoConstraints auf false setzen. Jedoch Sie NOT set translatesAutoresizingMaskIntoConstraints to false für die v Instanz sollte, weil Sie nicht über die äußeren Randbedingungen für die Verwaltung, die Tableview wird es für Sie tun ...

0

Ich denke, diese für Sie hilfreich:

// Ihr 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()  
} 

Hinweis: wenn Sie zwei Header hinzufügen, eine weitere Ansicht

Verwandte Themen