zoukankan      html  css  js  c++  java
  • UITableView表视图以及重建机制

    表视图UITableView
     
    表视图UITableView,是IOS中最重要的视图,随处可见
    表视图通常用来管理一组具有相同数据结构的数据
    UITableView继承自UIScrollView,所以可以滚动
    表视图的每一条数据都是显示在UITableViewCell对象中
    表视图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0开始
     
     
     
     tableView的样式是个枚举类型,有两种样式:plain和grouped可以根据在不同的使用场景下设置不同的样式 

    typedef NS_ENUM(NSInteger, UITableViewStyle) {

        UITableViewStylePlain,                  // regular table view

        UITableViewStyleGrouped                 // preferences style table view

    };

     
     
     
    DataSource数据源
     
    我们需要给tableView指定一个数据源,他负责给tableView提供数据
    需要实现协议中两个必须实现的方法

     TableView 作为一个空表,自身并不确定项目中需要展示的行数显示的内容以及单元格样式,所以需要通过代理来获取;

     TableView对应的试图控制器需要遵守UITableViewDataSource协议,并实现两个必须实现的协议方法

     1、每一个分区需要展示多少行,(通过协议方法返回值提供给TableView)

     2、指定分区指定行所需要得单元格对象(通过协议方法返回值提供给TableView)

     TableView真正展示数据的视图为其所管理的单元格所以代理对象在协议方法中创建单元格的同时需要为单元格提供数据

     
     
     

    设置单元格的选中样式 在IOS7开始选中的样式一共只有两种可用,一种是选中没有样式,一种是选中后显示灰色

     
     
     
     
     
     
    以下是UITableViewDataSource协议中必须实现的两个方法,以及一些重要属性的设置
     
     
     
     
    重用机制
     
    UITableView靠mutableSet来实现重用功能
    出屏幕的cell会被添加到mutableSet中,进入屏幕的cell,先从set中获取,如果获取不到,才创建一个cell,在cell显示之前,给cell赋上响应的内容
    cell的reuseldentifier是重用的关键
    重用机制是tableView提供的用于控制和优化内存的解决方案,其原理为:根据TableView的大小以及行高创建指定个数的单元格,当产生滑动时,一些暂时划出TableView的单元格就会进入到TableView的重用机制队列被保存下来,等待下次继续使用,那么代理对象通过当前方法为TableView提供单元格对象时优先根据提前指定的重用标识符获取重用队列中是否有可用的单元格,如果有,则重新为单元格添加数据,如果没有则创建新的单元格,然后添加数据,返回给表视图让其管理显示
    下面是重用机制创建的步骤:
     
    表视图的配置
    NSIndexPath
     
     
     
     
     
    多个分区
    tableView默认是一个分区,可以设置多个分区
    tableView的plain、group样式决定分区的样式不同,
    每一个分区可以设置区头区尾
     
     
     
     
     
    方法的具体实现如下:
     
     
     
     
     
     
    方法的具体实现如下:
     
     
     
     
     
     
     
     
    方法的具体实现如下:
     
     
  • 相关阅读:
    kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器
    解决VS2015 VBCSCompiler.exe 占用CPU100%的问题
    电商网站商品模型之商品详情页设计方案
    大三那年在某宝8块钱买的.NET视频决定了我的职业生涯
    单点登录改进版-使用ajax分发cookie避免重定向轮询
    可跨域的单点登录(SSO)实现方案【附.net代码】
    使用ANTS Performance Profiler&ANTS Memory Profiler工具分析IIS进程内存和CPU占用过高问题
    js封装的三级联动菜单(使用时只需要一行js代码)
    EF查询之性能优化技巧
    EF使用CodeFirst方式生成数据库&技巧经验
  • 原文地址:https://www.cnblogs.com/496668219long/p/4471232.html
Copyright © 2011-2022 走看看