为啥 viewDidLoad() 中不存在 TableView 的 FooterView 以及如何解决?
Posted
技术标签:
【中文标题】为啥 viewDidLoad() 中不存在 TableView 的 FooterView 以及如何解决?【英文标题】:Why TableView's FooterView doesn't exist in viewDidLoad() and how to fix it?为什么 viewDidLoad() 中不存在 TableView 的 FooterView 以及如何解决? 【发布时间】:2018-09-06 18:30:27 【问题描述】:我有tableView
,在情节提要中设置了一个部分和页脚。我正在尝试使用以下代码在viewDidLoad()
中更改我表格的footerView
中的文本
tableView.footerView(forSection: 0)?.textLabel?.text = "Testing text"
但是tableView.footerView(forSection: 0) == nil
然后在用户点击一个按钮时,我调用了一个函数,该函数使用相同的代码更改 footerView 的文本,并且效果很好。
func changeFooterText()
tableView.footerView(forSection: 0)?.textLabel?.text = "Testing text after tap"
为什么footerView
不存在于viewDidLoad
中,如何更改viewDidLoad
中的文本?还是我应该在其他地方更改它?加载屏幕后,我需要在页脚中添加取决于屏幕上其他数据的文本。
期待阅读您的建议。
【问题讨论】:
【参考方案1】:您可以使用表格页脚查看方法:
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
【讨论】:
非常感谢! 但是如果我这样做 - 我会注意自己添加页脚标签的样式,对吗?没有默认样式?我的函数中的tableView.footerView(forSection: 0)
也变成了== nil
。【参考方案2】:
“viewDidLoad”在视图生命周期中过早。 UITableView 还没有构建它的组件。
您可能可以将代码移至“viewDidAppear”,但最好像构建其他单元格一样构建页脚和页眉。 dequeueReusableHeaderFooterViewWithIdentifier 委托方法就是为了这个。
【讨论】:
谢谢!为什么认为这种方式比tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
更好?
两者都可以。使用 viewForFooterInSection,您可以提供一个 UIView 显示在页脚区域。 dequeueReusableHeaderFooterViewWithIdentifier 交互有点像 UITableViewCells 本身,我觉得更好一点。如果你有很多部分,你会从 dequeue 中获得一些对象重用......
你能给出一个代码示例吗?这对我很有帮助,我是 ios 开发的新手。以上是关于为啥 viewDidLoad() 中不存在 TableView 的 FooterView 以及如何解决?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Qt creator 中不存在所有 android 权限?
为啥我会收到此错误错误状态:使用 Firestore 时 DocumentSnapshotPlatform 中不存在字段?