Ví dụ đầy đủ 2019 để sao chép và dán
Đầu tiên đặt "Được nhóm" trên bảng phân cảnh: nó phải xảy ra vào thời điểm init, bạn không thể thực sự đặt nó sau, vì vậy việc ghi nhớ trên bảng phân cảnh sẽ dễ dàng hơn:
Kế tiếp,
Phải triển khai heightForHeaderInSection do lỗi của Apple.
func tableView(_ tableView: UITableView,
heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat(70.0)
}
Vẫn còn một lỗi của Apple - trong mười năm nay - nơi đơn giản là nó sẽ không hiển thị tiêu đề đầu tiên (tức là chỉ số 0) nếu bạn không có heightForHeaderInSection
cuộc gọi.
Vì vậy, tableView.sectionHeaderHeight = 70
đơn giản là không hoạt động, nó bị hỏng .
Đặt khung không đạt được gì:
Trong viewForHeaderInSection
cần tạo một UIView ().
Sẽ là vô nghĩa / không đạt được gì nếu bạn UIView (khung ...) vì iOS chỉ đơn giản đặt kích thước của chế độ xem như được xác định bởi bảng.
Vì vậy, dòng đầu tiên viewForHeaderInSection
sẽ đơn giản let view = UIView()
và đó là quan điểm bạn quay lại.
func tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
let l = UILabel()
view.addSubview(l)
l.bindEdgesToSuperview()
l.backgroundColor = .systemOrange
l.font = UIFont.systemFont(ofSize: 15)
l.textColor = .yourClientsFavoriteColor
switch section {
case 0:
l.text = "First section on screen"
case 1:
l.text = "Here's the second section"
default:
l.text = ""
}
return view
}
Đó là nó - bất cứ điều gì khác là một sự lãng phí thời gian.
Một vấn đề "cầu kỳ" khác của Apple.
Tiện ích mở rộng tiện lợi được sử dụng ở trên là:
extension UIView {
// incredibly useful:
func bindEdgesToSuperview() {
guard let s = superview else {
preconditionFailure("`superview` nil in bindEdgesToSuperview")
}
translatesAutoresizingMaskIntoConstraints = false
leadingAnchor.constraint(equalTo: s.leadingAnchor).isActive = true
trailingAnchor.constraint(equalTo: s.trailingAnchor).isActive = true
topAnchor.constraint(equalTo: s.topAnchor).isActive = true
bottomAnchor.constraint(equalTo: s.bottomAnchor).isActive = true
}
}
tableView:titleForHeaderInSection:
?