テーブルビューの中央でヘッダーを開始し、追加されたtableViewセルで上にスクロールアップして停止できるテーブルビューを作成しようとしています。テーブルビューセルはその「下」でスクロールできます。ヘッダーをテーブルビューの中央に配置しましたが、テーブルビューのセルはその上をスクロールするだけで、ヘッダーは実際には上までスクロールしません。どこにいてもそのままです。リストをスクロールするときにヘッダーを移動させ、リストの上部に到達すると停止し、その後移動するtableViewセルだけにしたい。
XCodeの最新バージョンを使用しています
セクションを使用してそれを行うことができます。私があなたの質問を正しく理解した場合、あなたがしたいことは、ヘッダーの上にいくつかのセルを持ち、ヘッダーの下にいくつかのセルを持っている間、画面の中央にヘッダーを表示する必要があり、tableViewを上にスクロールすると、ヘッダーがスクロールされるはずです上部に移動し、上部に達したときにヘッダーを上部に維持し、セルをヘッダーの下でスクロールする必要があります。
これを行うには、データソースから2つのセクションを返します
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
return 2
}
そして、データソースでは条件付きセルを返します
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
If(section == 1) {
return <Return number of cell you want to display above header>
} else {
return <Return number of cell you want to display below header>
}
}
次に、デリゲートをオーバーライドします
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
if(section == 0) {
return nil //As you do not have to display header in 0th section, return nil
} else {
return <Return your header view>
//You can design your header view inside tableView as you design cell normally, set identifier to it and dequeue cell/headerView as:
//However this may result in unexpected behavior since this is not how the tableview expects you to use the cells.
let reuseIdentifier : String!
reuseIdentifier = String(format: "HeaderCell")
let headerView = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: NSIndexPath(forRow: 0, inSection: 0))
return headerView
}
}
条件付きの高さを
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
if(section == 0) {
return 0
} else {
return <Return your header view height>
}
}
ここでは、いくつかのセルがある2番目のセクションにヘッダーを表示しているため、ヘッダーのないtableViewにいくつかのセルが表示され、このセルの下にいくつかのセルのあるheaderViewが表示され、tableViewを上にスクロールするとheaderViewセルが一番上になるまでスクロールします。
これがお役に立てば幸いです。