UITableViewController部分页眉和页脚没有显示

时间:2017-07-24 22:16:46

标签: ios swift uitableview

Swift 3,XCode 8.3 动态原型细胞。视图(类CustomTableViewController: UITableViewController)位于一个单独的故事板中,该故事板是从另一个故事板引用的,其中包含来自表的segue,该表本身嵌入在Nav Controller中。

实施以下方法:

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)

如果我在navcontroller中嵌入了viewcontroller,则会调用viewForFooterInSection并显示视图。仍未调用willDisplayHeaderView编辑:它没有嵌入它是将我的CustomTableViewController设置为初始视图控制器。当Nav Controller是IVC时,则调用viewForFooterInSection,当CustomTableViewController(嵌入在Nav Controller中)是IVC时,不会调用viewForFooterInSection。

如果我将表格更改为静态单元格,则会调用willDisplayHeaderView并调用viewForFooterInSection,但仅当视图嵌入到Nav控制器中时才会再次调用。

嵌入另一个Nav Controller有副作用,我试图避免,但无论如何willDisplayHeaderView都没有被调用。

3 个答案:

答案 0 :(得分:0)

你忘记了这些代表:

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 100
}

override func tableView(_ tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat {
    return 100
}

标题相同。快乐的编码!

答案 1 :(得分:0)

添加

的委托方法
  1. 标题的高度(返回标题的适当高度)
  2. 查看标题
  3. 页脚高度(为页脚返回适当的高度)
  4. 查看页脚
  5. 如果您在Viewcontroller中使用表,则检查Delegate和数据源是否已分配给表。

答案 2 :(得分:0)

您可以实现以下表格视图方法

extension DemoViewController: UITableViewDelegate {

//setting header height to 100
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 100
}

//setting footer height to 100
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 100
}

//setting header view
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView(frame: CGRect(x:0, y:0, width: tableView.frame.size.width, height: 50))
    headerView.backgroundColor = UIColor.red
    return headerView
}

//setting footer view
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerView = UIView(frame: CGRect(x:0, y:0, width: tableView.frame.size.width, height: 50))
    footerView.backgroundColor = UIColor.green
    return footerView
}

func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) {
    //customization for footer goes here
}

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    //customization for header goes here
}
}