Ios 将nil添加到tableHeaderView时,将无法再次显示它

Ios 将nil添加到tableHeaderView时,将无法再次显示它,ios,uitableview,tableheader,Ios,Uitableview,Tableheader,我已在序列图像板的TableView中添加了表格标题,我想隐藏/显示此标题 我有一个分段控件,希望标题显示在其中一个分段中 为了在我使用的一个段中隐藏标题:tableView.tableHeaderView=nil 这就隐藏了它。 在其他段中,要取消隐藏我使用的标题,请执行以下操作: if tableView.tableHeaderView == nil { tableView.tableHeaderView = self.tableViewHeader } 但标题不再显示。如何解决此

我已在序列图像板的TableView中添加了表格标题,我想隐藏/显示此标题

我有一个分段控件,希望标题显示在其中一个分段中

为了在我使用的一个段中隐藏标题:
tableView.tableHeaderView=nil
这就隐藏了它。 在其他段中,要取消隐藏我使用的标题,请执行以下操作:

if tableView.tableHeaderView == nil {
    tableView.tableHeaderView = self.tableViewHeader
}

但标题不再显示。如何解决此问题?

您可以像这样隐藏和显示表头:

// Show header
setContentOffset(CGPoint(x:CGFloat(0),y:CGFloat(44)),动画:true)

tableView.setContentOffset(CGPoint(x:CGFloat(0),y:CGFloat(0)),动画:true)

您只需使用

tableView.tableHeaderView.isHidden = true
 if tableView.tableHeaderView.isHidden {
  tableView.tableHeaderView.isHidden = false }

如果你设定

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
            }
        }

在设置tableView.tableHeaderView=nil之后,您是否检查了self.tableViewHeader的值。这导致在我隐藏标题时在标题处显示空白,然后简单地执行tableView.tableHeaderView.removefromsuperview我正在使用Swift,我已经用Swift更新了我的代码,谢谢提醒我。tableView.setContentOffset(CGPoint(x:CGFloat(0),y:CGFloat(64)),动画:true)这对我来说很好,Thanks@user1553381很高兴听到!!。这对你很有帮助。请投票表决我的答案。
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
            }
        }