Swift 将页脚视图添加到tableView最干净的方法是什么?

Swift 将页脚视图添加到tableView最干净的方法是什么?,swift,uitableview,Swift,Uitableview,我想知道,向tableview添加页脚的最干净、最简单的方法是什么 现在我做一个硬编码: func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { if viewModel.shouldShowPremiumBanner { let footerView: LibraryFooterView = tableView

我想知道,向tableview添加页脚的最干净、最简单的方法是什么

现在我做一个硬编码:

func tableView(_ tableView: UITableView,
               viewForFooterInSection section: Int) -> UIView? {
    if viewModel.shouldShowPremiumBanner {
        let footerView: LibraryFooterView = tableView.dequeueReusableHeaderFooter()
        footerView.viewModel = LibraryFooterViewModel(navigator: Locator.navigator,
                                                      localStorage: Locator.localStorage)
        self.tableView.tableFooterView = footerView
        return footerView
    }
    return nil
}


func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    if viewModel.shouldShowPremiumBanner {
        return estimatedSectionFooterHeight
    }
    return .leastNormalMagnitude
}

我想将其添加到tableview,而不是第节中

您已经通过设置self.tableView.tableFooterView=footerView

根据文件

使用此属性可以为整个表指定页脚视图。这个 页脚视图是表视图滚动中显示的最后一项 内容,并且它与您添加到的页脚视图是分开的 个别章节。此属性的默认值为零

链接:

因此,只需删除viewController的
viewForFooterInSection
code和
viewDidLoad
,即可简单设置

override func viewDidLoad() {
    super.viewDidLoad()
    let footerView: LibraryFooterView = tableView.dequeueReusableHeaderFooter()
    footerView.viewModel = LibraryFooterViewModel(navigator: Locator.navigator,
                                                  localStorage: Locator.localStorage)
    self.tableView.tableFooterView = footerView
}
通过在
viewforfooterInstitution
中写入
self.tableView.tableFooterView=footerView
,您只是一次又一次地重置同一变量,而没有实际的视觉变化,而且您只是一次又一次地创建视图及其视图模型,浪费了CPU周期。设置一次可以在
viewDidLoad
中,也可以在任何对您的情况有意义的地方设置一次,然后离开它


希望对您有所帮助

以上代码的哪一部分有问题?如果
viewModel.shouldShowPremiumBanner
为真,您将返回所有节的页脚视图,但我相信这是您的要求,除此之外,我看不到任何问题我希望将此添加到不在节中的tableview