设置 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. c#委托中的同步和异步方法即BeginInvoke和EndInvoke

    学习多线程之前我们先了解一下电脑的一些概念,比如进程,线程,这个参考https://www.cnblogs.com/loverwangshan/p/10409755.html 这篇文章.今天我们接着来 ...

  2. JavaScript 条件语句

    if语句     有些代码块只能在一定条件下运行,通过if.if else.else代码块,可以让你的代码按条件执行. // 控制流 var foo = true; var bar = false; ...

  3. XML记一次带命名空间的xml读取

    public static void ReadXML(string xmlUrl) { //判断文件是否存在 if (!File.Exists(xmlUrl)) { Console.WriteLine ...

  4. [Linux] memache打印所有的key

    1.在使用memcache的时候 , 经常需要查看下里面存储的值 , 前提是要先知道key是啥,memcache没有redis的keys命令 2.下面两个命令的结合,可以查看到key stats it ...

  5. 如何将JAR包发布到Maven中央仓库?

    将jar包发布到Maven中央仓库(Maven Central Repository),这样所有的Java开发者都可以使用Maven直接导入依赖,例如fundebug-java: <!-- ht ...

  6. 学习前端笔记1(HTML)

    (注:此文是在看过许多学习资料和视频之后,加上自身理解拼凑而成,仅作学习之用.若有版权问题,麻烦及时联系) 标准页面结构: HTML发展历史:  注:每一种HTML需要有对应的doctype声明. H ...

  7. 【代码笔记】Web-CSS-CSS 分组和嵌套

    一, 效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  8. XSS Challenges

    平台: http://www.zixem.altervista.org/XSS/ level1: Payload: http://www.zixem.altervista.org/XSS/1.php? ...

  9. [20190402]Library Cache mutex.txt

    [20190402]Library Cache mutex.txt 1.环境:SCOTT@book> @ ver1PORT_STRING                    VERSION   ...

  10. python粗谈面向对象(一)

    1.面向过程编程vs函数式编程 面向过程编程 以计算对象的元素个数为例. str_1 = 'abcdefg' count = 0 for i in str_1: # 统计字符串元素个数 count + ...