After I checked your sample project:
You havenβt done anything wrong, but referring to viewForFooterInSection , it will not be called until you implement the heightForFooterInSection method:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { return 50
Similar cases:
There is no implementation for heightForHeaderInSection ==> There is no call for viewForHeaderInSection , even if it is implemented.
Return numberOfRowsInSection as zero ==> There is no call to cellForRowAt , even if it is implemented.
Additional note: you do not need to add tableView.dataSource = self and tableView.delegate = self to viewDidLoad() , they were set in the Builder interface.
source share