• iOS之UITableView组头组尾视图/标题悬停


    最近笔者在公司的iOS开发中,有一个iOS开发同事跑来问了两个问题:1.给UITableView设置了组头和组尾视图,但是一直显示不出来?2.UITableView的section的header和footer视图,没有产品经理需要的悬停效果?针对于这2个问题,我详细的测试了一下,然后得出了如下结论。

    针对于问题一,是因为对方创建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行)

                           

               图1                                                                图2

    同理,组头标题和组尾标题也是如此。下图3为plain样式的效果,图4为grouped样式的效果。

                           

    注意:对于组头组尾视图,如果控制器是作为子控制器被push或者modal的。那么如果被push或者modal的UITableViewController为UITableViewStylePlain样式,那么很遗憾,依旧不会显示组头和组尾视图。所以只能够设置为UITableViewStyleGrouped样式。那么问题又来了,组头组尾视图是有了,但是不能够悬停。

         对于组头组尾标题,不管控制器作为子控制器push或者modal出来的。UITableViewController为UITableViewStylePlain样式,会有悬停效果。如果被push的UITableViewController为UITableViewStyleGrouped样式,不会有悬停效果。

  • 相关阅读:
    Fiddler-常用技巧
    Fiddler-工作原理
    C语言-EOF和feof()判断文件结尾的区别
    C语言-一个fopen函数中未使用二进制模式(b)引发的血案
    VIM-不常用或不知道的技巧
    C语言-srand种子详解
    C语言-字符串操作函数
    C语言-Makefile经典教程(掌握这些足够)
    分布拟合——正态/拉普拉斯/对数高斯/瑞利 分布
    曲线拟合——(2)拉普拉斯/瑞利/对数正态 曲线
  • 原文地址:https://www.cnblogs.com/wsnb/p/5094989.html
Copyright © 2020-2023  润新知