【Swift4】UICollectionViewにHeaderとFooterをつける
7404 ワード
UICollectionView作成時に、ヘッダとフッタがなかなか表示されなかったので、改めてサンプルを作成し手順を整理しました。
手順1: StoryBoard上でUICollectionViewとヘッダ、フッタの追加
まず、下記の図のように、UICollectionViewをViewControllerに追加し、インスペクター(画面右)内のAccessoriesの”Section Header”、”Section Footer”を追加します。(①)
追加すると②の下線部のようにCollectionReusableViewが追加されます。
その後、各cellにIDをつけます。
■ヘッダ
■セル
■フッタ
手順2: ViewController.swiftの設定
下記のコードを参照してください。
ViewController.swift
import UIKit
// ①UICollectionViewDelegateとUICollectionViewDataSourceの継承
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
// ②StoryBoardのUICollectionViewと紐づけ
@IBOutlet weak var testCollectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
// ③UICollectionViewのdelegateとdataSourceの設定
testCollectionView.delegate = self
testCollectionView.dataSource = self
}
// ④セクション内のセルの数を返すメソッド (今回は5個を設定)
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
// ⑤実際にセルを設定するメソッド
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = testCollectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
return cell
}
// ⑥ヘッダ、フッタを設定するメソッド
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if (kind == "UICollectionElementKindSectionHeader") {
//ヘッダーの場合
let testSection = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "header", for: indexPath)
return testSection
} else {
//フッターの場合
let testSection = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "footer", for: indexPath)
return testSection
}
}
}
表示結果
Author And Source
この問題について(【Swift4】UICollectionViewにHeaderとFooterをつける), 我々は、より多くの情報をここで見つけました https://qiita.com/tetsukick/items/07a8b41a42a6542d6708著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .