zoukankan      html  css  js  c++  java
  • tableView

    1.如何利用tableView如何展示数据

    设置数据源对象(一般是控制器)

    self.tableView.dataSource = self;

    数据源对象需要遵守协议->UITableViewDataSource

    @interface ViewController ()<UITableViewDataSource>
    @end

    实现数据源协议里面的方法

    /**
    * 告诉tableView⼀一共有多少组
    */
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
    }
    /**
    * 告诉tableView第section组有多少⾏行
    */
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:
    (NSInteger)section
    {
    }
    /**
    * 告诉tableView每⼀一⾏行显⽰示的内容(tableView每⼀一⾏行都是UITableViewCell)
    */
    - (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    }
    /**
    * 告诉tableView每⼀一组头部显⽰示的标题
    */
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:
    (NSInteger)section
    {
    }
    /**
    * 告诉tableView每⼀一组尾部显⽰示的标题
    */
    - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:
    (NSInteger)section
    {
    }

    2.tableView常见的设置

    // 设置tableView每⼀一⾏行cell的⾼高度,默认是44
    self.tableView.rowHeight = 80;
    // 设置tableView每⼀一组头部的⾼高度
    self.tableView.sectionHeaderHeight = 50;
    // 设置tableView每⼀一组尾部的⾼高度
    self.tableView.sectionFooterHeight = 50;
    // 设置分割线的颜⾊色,如果设置[UIColor clearColor]隐藏分割线
    self.tableView.separatorColor = [UIColor redColor];
    // 设置分割线的样式
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    // 设置表头
    self.tableView.tableHeaderView = [[UISwitch alloc] init] ;
    // 设置表尾
    self.tableView.tableFooterView = [UIButton
    buttonWithType:UIButtonTypeContactAdd];
    // 设置索引条上⽂文字颜⾊色
    self.tableView.sectionIndexColor = [UIColor redColor];
    // 设置索引条的背景颜⾊色
    self.tableView.sectionIndexBackgroundColor = [UIColor blackColor];

    3.tableViewCell的常见设置

    // 设置cell右边的指⽰示控件
    cell.accessoryView = [[UISwitch alloc] init];
    // 设置cell右边的指⽰示样式(accessoryView优先级 > accessoryType)
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    // 设置cell的背景view
    // backgroundView优先级 > backgroundColor
    UIView *bg = [[UIView alloc] init];
    bg.backgroundColor = [UIColor blueColor];
    cell.backgroundView = bg;
    // 设置cell的背景颜⾊色
    cell.backgroundColor = [UIColor redColor];
    // 设置cell选中的背景view
    UIView *selectbg = [[UIView alloc] init];
    selectbg.backgroundColor = [UIColor purpleColor];
    cell.selectedBackgroundView = selectbg;
    // 设置cell选中的样式
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    4.代理方法

    /**
    * 当选中某⼀一⾏行cell就会调⽤用
    */
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
    (NSIndexPath *)indexPath
    {
    }
    /**
    * 当取消选中某⼀一⾏行cell就会调⽤用
    */
    - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:
    (NSIndexPath *)indexPath
    {
    }
    /**
    * 返回每⼀一组显⽰示的头部控件
    *
    */
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:
    (NSInteger)section
    {
    }
    /**
    * 返回每⼀一组显⽰示的尾部控件
    *
    */
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:
    (NSInteger)section
    {
    }
    /**
    * 返回每⼀一组头部的⾼高度
    *
    */
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:
    (NSInteger)section
    {
    }
    /**
    * 返回每⼀一组尾部的⾼高度
    *
    */
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:
    (NSInteger)section
    {
    }
    /**
    * 返回tableView每⼀一⾏行的⾼高度
    */
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:
    (NSIndexPath *)indexPath
    {
    }

    5.性能优化

    传统的写法

    /**
    * 每当有⼀一个cell进⼊入视野范围内就会调⽤用1次
    */
    - (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    // 0.定义⼀一个重⽤用标识
    static NSString *ID = @"wine";
    // 1.⾸首先去缓存池中查找可循环利⽤用的cell
    UITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:ID];
    // 2.如果缓存池中没有,⾃自⼰己创建
    if (cell == nil) {
    cell = [[UITableViewCell alloc]
    initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    //3. 设置数据
    cell.textLabel.text = [NSString stringWithFormat:@"%zd⾏行数
    据",indexPath.row];
    return cell;
    }

    注册

    - (void)viewDidLoad {
    [super viewDidLoad];
    // 根据ID 这个标识 注册对应的 cell类型
    [self.tableView registerClass:[UITableViewCell class]
    forCellReuseIdentifier:ID];
    }
    /**
    * 每当有⼀一个cell进⼊入视野范围内就会调⽤用1次
    */
    - (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    // 1.⾸首先去缓存池中查找可循环利⽤用的cell
    UITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:ID];
    // 2.设置数据
    cell.textLabel.text = [NSString stringWithFormat:@"%zd⾏行数
    据",indexPath.row];
    return cell;
    }

     

    6.索引条

    /**
    * 返回每⼀一组的索引标题(数组中都是NSString对象)
    */
    - (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView
    *)tableView
    {
    }
  • 相关阅读:
    你不知道JavaScript--作用域、LHS查询和RHS查询
    学习koa开发API(六)--- 页面开发和准备需要的接口文档
    学习koa开发API(五)--- 对异常和参数的处理
    学习koa开发API(四)--- 文件目录设置
    学习koa开发API(三)--- OPTIONS请求的理解和处理
    学习koa开发API(二)--- 认识Koa-Router和获取参数
    学习koa开发API(一)--- 认识RESETful API和KOA
    No.4
    盒子模型
    CSS布局总结(三)
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6858037.html
Copyright © 2011-2022 走看看