コピーして貼り付ける2019年の完全な例
最初にストーリーボードで「グループ化」を設定します。初期化時に行う必要があります。後で実際に設定することはできないため、ストーリーボードで覚えておくと簡単です。
次、
Appleのバグのため、heightForHeaderInSectionを実装する必要があります。
func tableView(_ tableView: UITableView,
heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat(70.0)
}
まだAppleのバグがあります-今から10年間-ない場合、最初のヘッダー(つまり、インデックス0)が表示されません。 heightForHeaderInSection
呼び出し。
だから、tableView.sectionHeaderHeight = 70
単に機能しない、それは壊れている。ます。
フレームを設定しても何も起こりません:
に viewForHeaderInSection
、単にのUIViewを作成します()。
それは無意味です/ あなたがUIView(frame ...)なら何も達成しません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:
ますか?