我试图在选中后折叠一个部分,但我的标题消失了,我试图在ViewDidLoad中注册viewForHeaderInSection类但没有成功,这里是步骤:
在每个标题上创建按钮和目标操作 如果点击,则collapseExpand函数将section中的行数设置为0,然后在正确的索引处调用reloadsections(发送者按钮标记)。
不幸的是,一旦重新加载,就不会调用viewForHeaderInSection,并且标题会消失。
任何帮助?
override func viewDidLoad() {
super.viewDidLoad()
// reistering headerfooterview class
tableView.registerClass(UITableViewHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: "header")
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
if hookMode {
// print (data.count)
return data.count
} else {
return 1
}
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == selectedSection {
return 0
} else {
return data[section].count
}
}
func expandCollapse(sender: UIButton) {
self.selectedSection = sender.tag
tableView.reloadSections(NSIndexSet( index: sender.tag ), withRowAnimation: .Bottom)
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header: CustomHeaderTableViewCell = tableView.dequeueReusableCellWithIdentifier("header") as! CustomHeaderTableViewCell
let button = UIButton(type: UIButtonType.System) as UIButton
button.frame = header.bounds
button.backgroundColor = UIColor.greenColor()
button.setTitle("Test Button", forState: UIControlState.Normal)
button.addTarget(self, action: #selector(MainWitness.expandCollapse), forControlEvents: UIControlEvents.TouchUpInside)
button.tag = section
header.addSubview(button)
if hookMode {
// print( hookedUsernames[section] )
header.sectionHeaderLabel.text = hookedUsernames[section]
} else {
header.sectionHeaderLabel.text = "TRENDS"
}
return header
}
答案 0 :(得分:0)
我在我的项目中这样做了。我所做的是在tableview中创建一个原型单元格,并在故事板中添加标签和按钮。
创建Tableviewcell类
class mainTableHeaderViewCell: UITableViewCell {
@IBOutlet weak var _btnShowHide: UIButton!
@IBOutlet weak var _lblSectionHeaderName: UILabel!
}
控制器中的
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableCellWithIdentifier("mainTableHeaderViewCell")! as! mainTableHeaderViewCell
header._lblSectionHeaderName.text = objTempDeficiencyList[section][0].sectionName
// sectionNameList[section].DESCRIPTION
header._btnShowHide.addTarget(self, action: "hideSection:", forControlEvents: .TouchUpInside)
if hiddenSections.contains(section) {
header._btnShowHide.setImage(UIImage(named: "expand"), forState: UIControlState.Normal)
}
else {
header._btnShowHide.setImage(UIImage(named: "uparrow"), forState: UIControlState.Normal)
}
header._btnShowHide.tag = section
return header.contentView
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if hiddenSections.contains(section) {
return 0
}
return List[section].count // getRowCount(section)
}
希望得到这个帮助。