ตัวอย่างเต็ม 2019 เพื่อคัดลอกและวาง
อันดับแรกตั้ง "จัดกลุ่ม" ไว้บนกระดานเรื่องราว: ต้องเกิดขึ้นในเวลาเริ่มต้นคุณไม่สามารถกำหนดได้ในภายหลังดังนั้นจึงง่ายต่อการจดจำในกระดานเรื่องราว:
ต่อไป,
ต้องใช้ความสูง heightForHeaderInSectionเนื่องจากข้อผิดพลาดของ Apple
func tableView(_ tableView: UITableView,
heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat(70.0)
}
ยังมีข้อบกพร่องของ Apple อยู่เป็นเวลาสิบปีแล้วซึ่งจะไม่แสดงส่วนหัวแรก (เช่นดัชนี 0) หากคุณไม่มีheightForHeaderInSection
สาย
ดังนั้นtableView.sectionHeaderHeight = 70
ก็ไม่ได้ทำงานมันเสีย
การตั้งค่าเฟรมทำได้โดยไม่ทำอะไรเลย:
ในviewForHeaderInSection
เพียงแค่สร้าง UIView (ที่)
มันไม่มีจุดหมาย / ไม่ทำอะไรเลยถ้าคุณUIView (เฟรม ... )ตั้งแต่ iOS เพียงแค่กำหนดขนาดของมุมมองตามตาราง
ดังนั้นบรรทัดแรกของviewForHeaderInSection
จะง่ายlet view = UIView()
และนั่นคือมุมมองที่คุณกลับมา
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
}
แค่นั้นแหละ - สิ่งอื่นใดที่ทำให้คุณเสียเวลา
ปัญหาแอปเปิ้ล "จุกจิก" อีกเรื่อง
ส่วนขยายความสะดวกที่ใช้ด้านบนคือ:
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:
?