在iOS实际开发中,很多时候都会遇到设置tableView的组头。
除了直接设置 【tableView.tableHeaderView = [[UIView alloc] initWithFrame:<#(CGRect)#>];】 之外,最常用的就是使用tableView的代理方法 【- (UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section;】。
但是有一个问题,很多时候我们设置了tableView的grouped样式,遵循了协议,设置了数据源和代理,上面这个返回组头view的代理方法还是不走。
究其原因,是因为在使用返回组头的代理方法时,必须要设置tableView的 sectionHeader 的高度。
//设置组头的高度-如果需要自定义组头视图,一定要设置行高,否则不走代理方法!【tableView.sectionHeaderHeight = 22;】。
在Xcode8正式版之前我们可以通过以上代码设置sectionHeaderHeight,没有问题。但是最近使用Xcode8.1时明明按照以上方法设置组头的高度,返回组头的代理方法还是不走,百思不得其解。忽然灵机一动,使用代理返回组头高度试试:
【- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section 】
使用代理方法设置组头高度之后,此问题解决了(使用设置 预估组头行高 的代理方法也可)…… 就是这么怪异……
此问题解决,也希望能帮到遇到同样问题的你!
PS:这里多说一句,就是在返回组头的代理方法中,如果使用系统默认的组头的textLabel,我们在设置字体的时候会不正常,所以这里尽量自定义组头view。 -end
——共同进步!