隐藏tableView.tableFooterView会导致我的section headerView消失

时间:2017-04-21 12:16:46

标签: ios swift uitableview

我有一个带有一个部分的tableViewController。我已经在故事板中的tableView中直接添加了一个UIView,并为我的tableViewController设置了该视图的插件(headerView),它的内容是分段控件和searchBar。

在tableView委托方法中,我的标题有以下内容:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return headerView
}

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

除了我的tableView的最后一行没有分隔符外,一切正常。这是预期的,我的解决方法一直是viewDidLoad中的以下内容:

self.tableView.tableFooterView = UIView(frame: CGRect.zero)
self.tableView.tableFooterView?.isHidden = true

由于某种原因,这两行代码导致我的headerView完全从表中消失。

我可以创建一个tableViewCell并将其用作我的tableView标头,但是searchBar和分段控件需要很多委托,这会导致其他问题。主要是每次重新加载tableView时,searchBar都想要resignFirstResponder。还有一些解决方法,但这一切都开始变得有点混乱。

只是想知道为什么我的headerView正在消失以及我能做些什么。

2 个答案:

答案 0 :(得分:1)

这是因为您将新的UIView对象分配给表头视图

如果要切换表格标题,则必须按照以下步骤进行操作

1)保留您要在表格标题中设置的视图的引用

UIView footerView =您的故事板referance

2)当你想要隐藏时,只需将nil分配给表格页脚

self.tableView.tableFooterView = nil

3)现在,当你想要显示然后再分配你的refence视图

self.tableView.tableFooterView = footerView

答案 1 :(得分:1)

从tableview中删除该标题视图并将其添加到UIViewController上,即直接将它们拖到first responderexit旁边。然后使用IBOutlet,您可以将其用作剖面视图。在这里它也被视为页脚视图。

enter image description here