补充 : 取消UITableView组头或者组尾的粘滞性 https://github.com/PSSDeveloper/bugDemo
之前在公司的iOS开发中,遇到了两个问题:1.给UITableView设置了组头和组尾视图,但是一直显示不出来?2.UITableView的section的header和footer视图,没有出现需要的悬停效果?
针对于问题一,是因为对方创建UITableViewController的时候使用了错误的构造方法。如果用导航控制器pushUITableViewController类型的控制器,必须给定UITableView的style。如下所示,错误方式和正确方式:
// UITableViewController错误创建方式:
WSTableViewController *tableVC = [[WSTableViewController alloc] init];
[self.navigationController pushViewController:tableVC animated:YES];
// UITableViewController正确创建方式:
WSTableViewController *tableVC = [[WSTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
[self.navigationController pushViewController:tableVC animated:YES];
// 注意:很多初级iOS工程师创建UITableViewController的时候习惯用init,殊不知,UITableViewController与其他控制器不同,需要指定控制器的tableView的style。
// 另外,自定义UITableViewController需要重写init方法的时候,也不要傻乎乎的重写init方法,而是需要重写initWithStyle:方法。
针对于问题二,UITableView的style无论是plain还是grouped样式,都可以设置组头组尾视图(通过代理方法)。
但需要注意的是,如果UITableView的style设置为grouped样式,那么组头和组尾视图 没有
悬停效果。
相反,如果UITableView的style设置为plain样式,那么组头和组尾视图 会有
悬停效果。
如下图1为plain样式下的悬停效果;图2为grouped样式下的非悬停效果。(PS:下图中的UITableView分为3组,每组10行)
同理,组头标题和组尾标题也是如此。下图3为plain样式的效果,图4为grouped样式的效果。
注意:对于组头组尾视图,如果控制器是作为子控制器被push或者modal的。那么如果被push或者modal的UITableViewController为UITableViewStylePlain样式,那么很遗憾,依旧不会显示组头和组尾视图。所以只能够设置为UITableViewStyleGrouped样式。那么问题又来了,组头组尾视图是有了,但是不能够悬停。
对于组头组尾标题,不管控制器作为子控制器push或者modal出来的。UITableViewController为UITableViewStylePlain样式,会有悬停效果。如果被push的UITableViewController为UITableViewStyleGrouped样式,不会有悬停效果。