After migrating my codebase from Swift 2.2 to Swift 3.0, I noticed that my UITableView
footer did not show up. It turns out that none of my UITableViewDe
After I checked your sample project:
You didn't did anything wrong, but referring to viewForFooterInSection
, it will not get called until you implement heightForFooterInSection
method:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 50 // for example
}
Similar Cases:
No implementing for heightForHeaderInSection
==> No calling for viewForHeaderInSection
even if it's implemented.
Returning numberOfRowsInSection
as zero ==> No calling for cellForRowAt
even if it's implemented.
Additional Note: you don't have to add tableView.dataSource = self
and tableView.delegate = self
in viewDidLoad()
, they have been set in the interface Builder.
In Xcode8, or latest Swift version, the method signature has been changed. This change might be causing your code to not call delegate method.
Fix it by writing method again using autocomplete.
Old Method -
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat? {
return 50.0
}
New Method -
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 50.0
}
heightForHeaderInSection has to be used while using viewForHeaderInSection.
Hope this helped.
You should set the height of the footer
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 15
}