我不知道为什么在swift3中没有调用viewForHeaderInSection
。我在UITableView中添加了heightForHeaderInSection
,但遗憾的是没有调用。请帮我查一下如何修理它。
func numberOfSectionsInTableView(_ tableView: UITableView) -> Int {
return 3
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch (section) {
case 0:
return homeStrs.count
case 1:
return accountStrs.count
case 2:
return otherStrs.count
default:
return otherStrs.count
}
}
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell {
let cell = menuTable.dequeueReusableCell(withIdentifier: "MenuCell", for: indexPath) as! MenuCell
cell.layoutMargins = UIEdgeInsets.zero;
cell.lbNoti.isHidden = true
switch ((indexPath as NSIndexPath).section) {
case 0:
cell.lbMenuTitle?.text = homeStrs[(indexPath as NSIndexPath).row]
cell.imgIcon.image = UIImage (named: homeImgStrs[(indexPath as NSIndexPath).row])
case 1:
cell.lbMenuTitle?.text = accountStrs[(indexPath as NSIndexPath).row]
cell.imgIcon.image = UIImage (named: accountImgStrs[(indexPath as NSIndexPath).row])
case 2:
cell.lbMenuTitle?.text = otherStrs[(indexPath as NSIndexPath).row]
cell.imgIcon.image = UIImage (named: otherImgStrs[(indexPath as NSIndexPath).row])
default:
cell.lbMenuTitle?.text = "Other"
}
return cell
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
switch (section) {
case 1:
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.menuTable.frame.size.width, height: 30))
let menuHeaderLabel = UILabel(frame: CGRect(x: 20, y: 0, width: self.menuTable.frame.size.width, height: 28))
menuHeaderLabel.text = "Account Settings"
headerView.addSubview(menuHeaderLabel)
return headerView
case 2:
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.menuTable.frame.size.width, height: 30))
let menuHeaderLabel = UILabel(frame: CGRect(x: 20, y: 0, width: self.menuTable.frame.size.width, height: 28))
menuHeaderLabel.text = "Others"
headerView.addSubview(menuHeaderLabel)
return headerView
default:
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.menuTable.frame.size.width, height: 0))
return headerView
}
}
答案 0 :(得分:13)
如果其他人遇到同样的问题...在viewDidLoad中添加此行调用了委托方法,因此显示了标题:
self.tableView.estimatedSectionHeaderHeight = 80
答案 1 :(得分:4)
您确定已在ViewController类中添加了UITableViewDelegate,UITableViewDataSource
答案 2 :(得分:1)
在我的情况下,将self.tableView.sectionHeaderHeight = 80.0
添加到viewDidLoad就可以了。
答案 3 :(得分:1)
同样的问题发生在我身上,因为 tableview 在计算标题的高度方面遇到困难,但我正在使用自动高度计算从 xCode 9 ,我不能给出任何明确的高度值,如上所述。经过一些实验,我得到了解决方案,我们必须将此方法重写为,
-(CGFloat)tableView:(UITableView *)tableView
estimatedHeightForHeaderInSection:(NSInteger)section
{
return 44.0f;
}
虽然我有选中这两个选项
来自故事板,但我仍然遇到了这个奇怪的错误。
请注意:此错误仅在 IOS-10 版本上显示,而不在 IOS-11 版本上显示。也许它是xCode的一个bug。感谢