Header & Footer Cells
CoreSection header and footer view base classes for UITableView. TTBaseUITableViewHeaderFooterView provides a padded panel container with TTBaseUIKit styling. Predefined subclasses cover common header patterns.
| Class | Pattern |
|---|---|
TTBaseUITableViewHeaderFooterView | Base — empty panel, override and fill |
LineTableHeaderFooterViewCell | Separator line only |
SpaceTableHeaderViewCell | Empty space/gap between sections |
TextLeftRightTableHeaderFooterViewCell | Left label + right label |
TextSubTextTableHeaderFooterViewCell | Title above, subtitle below |
TextTableHeaderFooterViewCell | Single centered/left label |
🚀 Usage
// Register
tableView.register(TTBaseUITableViewHeaderFooterView.self,
forHeaderFooterViewReuseIdentifier: TTBaseUITableViewHeaderFooterView.reuseIdentifier)
// Dequeue in delegate
func tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableHeaderFooterView(
withIdentifier: TTBaseUITableViewHeaderFooterView.reuseIdentifier
) as! TTBaseUITableViewHeaderFooterView
return header
}
// Text header (most common)
tableView.register(TextTableHeaderFooterViewCell.self,
forHeaderFooterViewReuseIdentifier: TextTableHeaderFooterViewCell.reuseIdentifier)
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableHeaderFooterView(
withIdentifier: TextTableHeaderFooterViewCell.reuseIdentifier
) as! TextTableHeaderFooterViewCell
header.titleLabel.setText(text: "Section \(section + 1)")
return header
}
// Custom header subclass
class MonthHeaderView: TTBaseUITableViewHeaderFooterView {
let monthLabel = TTBaseUILabel(withType: .TITLE, text: "", align: .left)
override func updateUI() {
panel.addSubview(monthLabel)
monthLabel.setLeadingAnchor(constant: 16).setcenterYAnchor(constant: 0)
}
func configure(month: String) {
monthLabel.setText(text: month)
}
}
// Space header (gap between sections)
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return tableView.dequeueReusableHeaderFooterView(
withIdentifier: SpaceTableHeaderViewCell.reuseIdentifier
)
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 16
}
Pro Tip: Use
SpaceTableHeaderViewCell with height ~16pt between sections for grouped-list visual separation without full InsetGroupedTableView which loses row customization. Pair with TTBaseShadowTableViewCell for a card-list look.