2017-12-20 5 views
0

ビューコントローラーの上部に、表がスクロールされても消えない2つのヘッダーが必要です。ViewForHeaderInSectionの2つのヘッダー

最初のコードセクションには、私が持っているトップヘッダーが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

1つの以上のビューを追加したい場合は、** 1 ** viewForHeaderで加算2つのビューをしたいですか?または、各セクションに1つのヘッダーと*全体の* tableviewの1つのヘッダーが必要ですか? – Honey

+0

1つのviewForHeaderに2つのビューを一緒に追加します。 'v'に –

+0

ありがとうございます.2つのサブビューを追加することができます。1)あなたのセグメントコントロール2)赤いビュー –

答えて

0

別のビュー(v)のサブビューとして1つのビュー(segmentControl)を追加するだけです。そして、viewForHeaderInSectionのビューとしてそれを返します。 segmentControl & vインスタンスの間にconstraintsを使用する必要があります。

segmentControlの場合は、translatesAutoresizingMaskIntoConstraintsfalseに設定する必要があります。しかし、あなたはそのための外側の制約を管理していないので、テーブルビューはあなたのためにそれを行いますv例えばNOT set translatesAutoresizingMaskIntoConstraints to falseが、私はあなたにこれは便利だと思う...

0

をすべきである:

//あなたのテーブルビュー

@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()  
} 

注:2つのヘッダが

関連する問題