设置 UITableView 中 cell 的背景颜色。

示例1:通过 backgroundView 设置。

 UIView *view1 = [[UIView alloc] init];
view1.backgroundColor = [UIColor blueColor];
cell.backgroundView = view1;

示例2:通过 backgroundColor 设置。

 cell.backgroundColor = [UIColor blueColor];

   backgroundView 的优先级比 backgroundColor 高,如果同时设置了, backgroundView 会覆盖 backgroundColor 。


  设置 cell 选中状态的背景。

 UIView *view2 = [[UIView alloc] init];
view2.backgroundColor = [UIColor redColor];
cell.selectedBackgroundView = view2;

  设置 UITableView 的其他属性。

 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;  //设置分割线样式
self.tableView.separatorColor = [UIColor redColor]; //设置分割线颜色
self.tableView.tableHeaderView = [UIButton buttonWithType:UIButtonTypeContactAdd]; //设置顶部视图
self.tableView.tableFooterView = [[UISwitch alloc] init]; //设置底部视图

  设置 cell 的 accessoryType 属性。

   accessoryType 为枚举类型,定义如下:

 typedef enum : NSInteger {
UITableViewCellAccessoryNone,
UITableViewCellAccessoryDisclosureIndicator,
UITableViewCellAccessoryDetailDisclosureButton,
UITableViewCellAccessoryCheckmark,
UITableViewCellAccessoryDetailButton
} UITableViewCellAccessoryType;

  也可通过 cell 的 accessoryView 属性来设置辅助指示视图,如下:

 cell.accessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd];

   cell 的工作原理:在程序执行的时候,能看到多少行,就创建多少条数据。

  缺点:如果数据量非常大,用户在短时间内来回滚动,将会创建大量的 cell ,并不重用之前已经创建的 cell ,将一直开辟新的存储空间。


   cell 的重用原理:当滚动列表时,部分 UITableViewCell 会移出窗口, UITableView 会将窗口外的 UITableViewCell 放入一个对象池中等待重用。当 UITableView 要求 dataSource 返回 UITableViewCell 时, dataSource 会先查看该对象池,如果池中有未使用的 UITableViewCell ,则会用新的数据来配置这个 UITableViewCell ,然后返回给 UITableView ,并重新显示到窗口中,从而避免创建新对象。因此,如果一个窗口只能显示5个 cell ,重用之后,只需要创建6个 cell 。

  通过 UITableViewCell 的 reuseIdentifier 属性,可在初始化的时候传入一个特定的字符串标识符来设置。当 UITableView 要求 dataSource 返回 UITableViewCell 时,先通过该标识符到对象池中查找对应类型的 UITableViewCell 对象。如果没有,就传入这个字符串标识符初始化 UITableViewCell 对象。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __FUNCTION__);
static NSString *identifier = @"hero"; //保存重用的标识符
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; //先去对象池中查找是否有满足条件的cell
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
NSLog(@"创建一个新的Cell");
}
// 给cell设置数据 return cell;
}

iOS开发基础-UITableView基本属性的更多相关文章

  1. iOS开发基础-UITableView控件简单介绍

     UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动.  UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...

  2. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  3. iOS开发系列--UITableView全面解析

    --UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是U ...

  4. iOS开发——总结篇&IOS开发基础知识

    IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...

  5. IOS开发中UITableView(表视图)的滚动优化及自定义Cell

    IOS开发中UITableView(表视图)的滚动优化及自定义Cell IOS 开发中UITableView是非常常用的一个控件,我们平时在手机上看到的联系人列表,微信好友列表等都是通过UITable ...

  6. IOS开发基础环境搭建

    一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:       ...

  7. iOS开发基础-九宫格坐标(6)

    继续对iOS开发基础-九宫格坐标(5)中的代码进行优化. 优化思路:把字典转模型部分的数据处理操作也拿到模型类中去实现,即将 ViewController 类实现中 apps 方法搬到 WJQAppI ...

  8. iOS开发基础-九宫格坐标(5)

    继续在iOS开发基础-九宫格坐标(4)的基础上进行优化. 一.改进思路 1)iOS开发基础-九宫格坐标(4)中 viewDidLoad 方法中的第21.22行对控件属性的设置能否拿到视图类 WJQAp ...

  9. iOS开发基础-九宫格坐标(4)

    对iOS开发基础-九宫格坐标(3)的代码进行进一步优化. 新建一个 UIView 的子类,并命名为 WJQAppView ,将 appxib.xib 中的 UIView 对象与新建的视图类进行关联. ...

随机推荐

  1. MariaDB Galera Cluster 部署 + keepalived实现高可用

    MariaDB Galera Cluster 部署 MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力 ...

  2. js密码修改显示与隐藏效果

    一.添加input框 <form class="login_form"> <input class="password inputpwd" i ...

  3. MVC架构中的Repository模式 个人理解

    关于MVC架构中的Repository模式   个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间.它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接 ...

  4. Sqlserver UrlEncode

    Sqlserver  UrlEncode if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UrlEncode ...

  5. Android开发——Drawable与Bitmap知识

    从资源中获得drawable Drawable drawable = getResources().getDrawable(R.drawable.xxx); drawable转换bitmapdrawb ...

  6. 通俗易懂的来讲讲js的函数执行上下文

    0.开场白 在平时编写JavaScript代码时,我们并不会和执行上下文直接接触,但是想要彻底搞懂JavaScript函数的话,执行上下文是我们绕不过去的一个知识点. 1.执行上下文栈 JavaScr ...

  7. Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 Performance and Scalability Documentation

    摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复285或者20181126可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...

  8. AEAI HR开源人力资源管理v1.6.0发版公告

    1 升级说明 AEAI HR v1.6.0版是AEAI HR v1.5.2版人力资源管理系统的升级版本,本次升级的系统是基于AEAI DP 3.8.0_20170228进行打包部署的,升级内容主要是针 ...

  9. Numpy库的下载与安装总结

    今天在做Plotly的散点图时,需要Numpy 这个库的使用 没有安装Numpy这个库的时候,报错一般是下图这样:ModuleNotFoundError: No module named 'numpy ...

  10. JavaScript中闭包的写法和作用详解

    1.什么是闭包 闭包是有权访问另一个函数作用域的变量的函数. 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内.而且,这些内部函数可以访问它们所在的外 ...