UITableView에서 사용자 정의 Header 사용 방법

6621 단어 UITableViewSwiftiOS

예제 코드

  • 이 코드는 아래 사이트에서 소개한 UITableView의 extention을 사용합니다.
  • Storyboard를 사용하여 UITableView를 구성할 때 템플릿(Swift3)
  • xib,storyboard 생략
  • SectionHeaderView.swift
    import UIKit
    
    final class SectionHeaderView: UITableViewHeaderFooterView {
    
        static let height: CGFloat = 44
    
        @IBOutlet weak var titleLabel: UILabel!
    
        func setup(titleText: String) {
            titleLabel.text = titleText
        }
    }
    
    SampleViewController.swift
    
    final class SampleViewController: UIViewController {
    
        @IBOutlet private weak var tableView: UITableView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            setupTableView()
        }
    
        private func setupTableView() {
            tableView.separatorStyle = .none
            tableView.delegate = self
            tableView.dataSource = self
    
            tableView.register(headerFooterViewClass: SectionHeaderView.self)
        }
    }
    
    extension SampleViewController: UITableViewDataSource, UITableViewDelegate {
        func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
            let header = tableView.dequeueReusableHeaderFooterView(withClass: SectionHeaderView.self)
            header.setup(titleText: "Section title")
            return header
        }
    
        func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
            return SectionHeaderView.height
        }
    
        func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
            return CGFloat.leastNormalMagnitude
        }
    ...
    

    주의사항


    UITableView 스타일을 그룹으로 설정합니다.


    기본 Plain의 경우 스크롤해도 Header가 남아 있으므로 Grouped를 지정합니다.

    HeightFooterInSection, HeightFooterInSection 지정


    참조:iOS11에서 Grouped UITableView의 섹션 제목에 추가 높이가 발생하는 문제

    좋은 웹페이지 즐겨찾기