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