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可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,101评论 3 38
  • 1.创建一个UITableView对象 ITableView *tableView = [[UITableView...
    桐生一猫阅读 1,460评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 版权声明:未经本人允许,禁止转载. 1. TableView初始化 1.UITableView有两种风格:UITa...
    萧雪痕阅读 2,921评论 2 10
  • 如题。是那些知道你的底细和筹码的对手吗,当然这样的谈判对手很不好应付。但是,最可怕的就是这次合作对于他们来说可有可...
    FFChai阅读 389评论 0 0