将 nil 添加到 tableHeaderView 时无法再次显示
When adding nil to tableHeaderView cant show it again
我已经在Storyboard的TableView中添加了tableHeader,我要hide/show这个header。
我有一个分段控件,希望 header 在其中一个分段中显示。
为了在一个片段中隐藏 header 我使用了:tableView.tableHeaderView = nil
这隐藏了它。
在其他部分,取消隐藏 header 我使用:
if tableView.tableHeaderView == nil {
tableView.tableHeaderView = self.tableViewHeader
}
但 header 没有再次显示。如何解决?
您可以像这样隐藏和显示 Table Header:
// Show header
tableView.setContentOffset(CGPoint(x: CGFloat(0), y: CGFloat(44)), animated: true)
// Hide header
tableView.setContentOffset(CGPoint(x: CGFloat(0), y: CGFloat(0)), animated: true)
你可以简单地使用
tableView.tableHeaderView.isHidden = true
if tableView.tableHeaderView.isHidden {
tableView.tableHeaderView.isHidden = false }
或
tableView.tableHeaderView.removeFromSuperview
如果你设置
tableView.tableHeaderView == nil
比你创建一个局部变量来存储 tableView.tableHeaderView 在 viewDidLoad 上这样
self.tableViewHeader = tableView.tableHeaderView
比检查
if tableView.tableHeaderView == nil
{
tableView.tableHeaderView = self.tableViewHeader
}
这个很好用
@IBAction func segmentButtonClicked(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
if demoTableView.tableHeaderView == nil {
var view1: UIView = UIView.init(frame: CGRect(x:0,y: 0,width :320,height: 60));
var label: UILabel = UILabel.init(frame: CGRect(x:0,y: 0,width :320,height: 60))
label.text = "header text"
view1.addSubview(label);
demoTableView.tableHeaderView = view1
}
demoTableView.reload()
case 1:
if demoTableView.tableHeaderView != nil {
demoTableView.tableHeaderView = nil
}
demoTableView.reload()
default:
break
}
}
我已经在Storyboard的TableView中添加了tableHeader,我要hide/show这个header。
我有一个分段控件,希望 header 在其中一个分段中显示。
为了在一个片段中隐藏 header 我使用了:tableView.tableHeaderView = nil
这隐藏了它。
在其他部分,取消隐藏 header 我使用:
if tableView.tableHeaderView == nil {
tableView.tableHeaderView = self.tableViewHeader
}
但 header 没有再次显示。如何解决?
您可以像这样隐藏和显示 Table Header:
// Show header
tableView.setContentOffset(CGPoint(x: CGFloat(0), y: CGFloat(44)), animated: true)
// Hide header
tableView.setContentOffset(CGPoint(x: CGFloat(0), y: CGFloat(0)), animated: true)
你可以简单地使用
tableView.tableHeaderView.isHidden = true
if tableView.tableHeaderView.isHidden {
tableView.tableHeaderView.isHidden = false }
或
tableView.tableHeaderView.removeFromSuperview
如果你设置
tableView.tableHeaderView == nil
比你创建一个局部变量来存储 tableView.tableHeaderView 在 viewDidLoad 上这样
self.tableViewHeader = tableView.tableHeaderView
比检查
if tableView.tableHeaderView == nil
{
tableView.tableHeaderView = self.tableViewHeader
}
这个很好用
@IBAction func segmentButtonClicked(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
if demoTableView.tableHeaderView == nil {
var view1: UIView = UIView.init(frame: CGRect(x:0,y: 0,width :320,height: 60));
var label: UILabel = UILabel.init(frame: CGRect(x:0,y: 0,width :320,height: 60))
label.text = "header text"
view1.addSubview(label);
demoTableView.tableHeaderView = view1
}
demoTableView.reload()
case 1:
if demoTableView.tableHeaderView != nil {
demoTableView.tableHeaderView = nil
}
demoTableView.reload()
default:
break
}
}