iOS UITableView的sectionHeader代理方法 viewForHeaderInSection (不走viewForHeaderInSection代理方法)

在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

——共同进步!

你可能感兴趣的:(iOS UITableView的sectionHeader代理方法 viewForHeaderInSection (不走viewForHeaderInSection代理方法))