我有一个带有节标题的 UITableView。整个 tableview 为单元格和标题设置了 UITableViewAutomaticDimension :
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
@IBOutlet var sectionHeader: MyTableViewHeaderFooterView!
let data = [
"Lorem ipsum dolor sit amet",
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation",
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 44.0
self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension
self.tableView.estimatedSectionHeaderHeight = 44.0
}
// MARK: - Table View
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
self.sectionHeader.label.text = "Section \(section)"
return self.sectionHeader
} else {
return nil
}
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MyTableViewCell
cell.label.text = data[indexPath.row]
return cell
}
}
问题是我想隐藏一些部分标题。第二部分标题应该被隐藏,因为我返回 nil 而不是视图,但是空间仍然保留。为什么?
Github 上的 Xcode 项目: https ://github.com/bvankuik/SectionHeaderAlwaysVisible