HeaderView
にUITableview
を追加しようとしているUITableviewがあります。
ただし、viewForHeaderInSectionは呼び出されていませんが、titleForHeaderInSectionが呼び出されているか表示されています。また、このためにカスタムセルヘッダーを使用しようとしましたが、機能しません。
何が間違っているのかわかりません。
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Groceries"
tableView.registerNib(UINib(nibName: "TransactionSpecifiedCategoriesTableViewCell", bundle: nil), forCellReuseIdentifier: "TransactionSpecifiedCategoriesTableViewCell")
tableView.registerNib(UINib(nibName: "TransactionSpecifiedCategoriesHeaderViewCell", bundle: nil), forHeaderFooterViewReuseIdentifier: "TransactionSpecifiedCategoriesHeaderViewCell")
tableView.tableFooterView = UIView(frame: CGRectMake(0, 0, 0, 0))
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 100))
footerView.backgroundColor = UIColor.blackColor()
return footerView
//let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView
//var headerView = UIView(frame: CGRectMake(0, 0, 100, 320))
//headerView.backgroundColor = UIColor.blackColor()
//
//return headerView
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 200.0
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "First section header title"
}
viewForHeaderInSection
メソッドはUITableViewDelegate
プロトコルに属します。したがって、このコールバックを取得するには、Table Viewのdelegate
をView Controllerに設定する必要があります。他のメソッドが呼び出されるときに、おそらくテーブルビューのdataSource
を設定しただけでしょう。
In Swift
電話する必要があります
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let rect = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 44)
let footerView = UIView(frame:rect)
footerView.backgroundColor = UIColor.clear
return footerView
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 44
}
in Swift 3.
tableView.estimatedSectionHeaderHeight = 40をviewDidに追加して、viewForHeaderInSectionを呼び出すこともできます。
デフォルトではデリゲートであるUITableViewControllerでviewForHeaderInSectionが呼び出されないという問題がありました。それは明らかになった
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
viewForHeaderInSectionが呼び出されないようにしました。したがって、デリゲートが機能しない場合は、他のセクションヘッダーメソッドのいずれかをオーバーライドしていないことを確認する必要があります。