##DAY10 UITableView基础
##DAY10 UITableView基础
UITableView继承于UIScrollView,可以滚动。
UITableView的每⼀条数据对应的单元格叫做Cell,是UITableViewCell的⼀个对象,继承于UIView。
UITableView可以分区显⽰,每⼀个分区称为section, 每⼀⾏称为row, 编号都从0开始。
系统提供了⼀个专门的类来整合section和row,叫做NSIndexPath。
#pragma mark ———————UITableView基本属性——————————
创建:
initWithFrame:style:
style的两种类型:
UITableViewStylePlain
UITableViewStyleGrouped
UITableView的属性:
rowHeight 设置行高,只能设置全部行高相同的情况
separatorColor 设置分割线的颜色
separatorStyle 设置分割线的风格
tableHeaderView 设置表格头部控件
tableFooterView 设置尾部控件
dataSource 显示数据相关的代理
delegate 视图操作相关的代理
#pragma mark --------UITableViewDataSource----------
tableView:numberOfRowsInSection: 每一组的行数,可以用switch(section)对不同的组进行判断
tableView:cellForRowAtIndexPath: 设置每一行显示怎样的内容(cell),每当有一个cell进入视野范围内,就会调用
numberOfSectionsInTableView:设置组数,不写实现,默认是一组
tableView:titleForHeaderInSection:第section组显示怎样的头部标题,概括这一组是干什么用的
tableView:titleForFooterInSection:第section组显示怎样的尾部标题,详细描述这一组是干什么用的
注意:TA有固定的字体样式。如果你想要不同的东西,使用自定义视图(UILabel)
tableView:canEditRowAtIndexPath: 允许被编辑的行,如果没有实现,所有行被认为是可编辑的。tableView:canMoveRowAtIndexPath: 允许重新排序,默认情况下全部可以
sectionIndexTitlesForTableView: 右侧边栏的索引(e.g. "ABCD...Z#")
tableView:sectionForSectionIndexTitle:atIndex: 设置一个组所对应的标题或索引 (e.g. "B",1)
tableView:commitEditingStyle:forRowAtIndexPath:提交编辑的具体实现
tableView:moveRowAtIndexPath:toIndexPath: 移动行的具体实现
#pragma mark --------UITableViewDelegate----------
点击单元格后触发的方法,跳转、传值都在这个方法中完成
tableView:didSelectRowAtIndexPath:
可变高度
tableView:heightForRowAtIndexPath:
tableView:heightForHeaderInSection:
tableView:heightForFooterInSection:
设置每一组的头视图和尾视图,注意高度,和内存管理autorelease
tableView:viewForHeaderInSection:
tableView:viewForFooterInSection:
其他方法见头文件和API
#pragma mark --------UITableViewCell----------
UITableViewCell的属性:
imageView 图片视图
textLabel 设置cell显示的文字
detailTextLabel 副标题视图
accessoryType 设置右边指示器的类型,下面这个枚举是个 >
accessoryView 自定义附属视图
backgroundView 设置未选中时的背景(背景的view,用init创建,不设置frame)
backgroundColor backgroundView的优先级高于backgroundColor,且前者可设置被选中的状态,后者不可
selectedBackgroundView 设置被选中时的背景
selectionStyle 选中的行的显示风格
cell的创建方法:
initWithStyle:reuseIdentifier:
#pragma mark --------UITableViewCell的重用机制----------
cell的创建方法:
initWithStyle:reuseIdentifier:
tableView的方法:
表视图通过重用标识去重用池中查找是否有能够被重用的cell
dequeueReusableCellWithIdentifier: (forIndexPath:)注意后半截在XIB时用
#pragma mark ------读取数据------
//读取数据
- (void)handleData{
//获取到plist文件在包中的路径
NSString *filePlath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"plist"];
//从路径中得到一个数组
NSArray *arr = [NSArray arrayWithContentsOfFile:filePlath];
//初始化模型数组
_modelArr = [[NSMutableArray alloc] initWithCapacity:0];
for (NSDictionary *dic in arr) {
Student *stu = [[Student alloc] init];
[stu setValuesForKeysWithDictionary:dic];
[_modelArr addObject:stu];
[stu release];
}
}
#pragma mark ——————————————建立模型——————————————
异常处理:
1、当使用KVC为模型赋值时,如果模型内部,没有声明相对应字典中的属性时,赋值直接跳过此字段,执行下一字段的赋值
2、如果字典中的关键字是系统保留字,那么在声明属性时会出现与字典关键字不对应,在此方法中就可以完成判断,对应赋值
- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
//内部什么都不做,异常处理,解决赋值个数不匹配的问题
}
##DAY10 UITableView基础的更多相关文章
- iOS UI基础-9.0 UITableView基础
在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: ...
- UITableView基础入门
新建一个Single View Application 添加一个空类如下: using System; using UIKit; using Foundation; namespace BasicTa ...
- Day10 Python基础之特殊函数(八)
一些特殊函数 1.递归函数(recursion) 递归函数的定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归函数的优点:是定义简单,逻辑清晰.理论上,所 ...
- Python全栈day10(基础知识练习题)
一,执行python的两种方式 1,写在脚本里面调用python执行,例如python test.py 2, 输入python在命令行交互执行,例如 python >>> pri ...
- Day10 - Python基础10 socketserver 实现并发
本节内容: 1.实例tcp的并发 2.看源代码继承关系 3.详解:ThreadingTCPServer的过程 4.tcp和udp的request 不同 5.基于udp的并发实现 1.实例tcp并发 s ...
- day10.函数基础及函数参数
一.函数 功能:包裹一部分代码 实现某一个功能 达成某一个目的 特点: """ 特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理 函数基本格式 函数的定义 ...
- Swift基础之侧滑Cell显示操作按钮
好久没写过博客了,今天展示一个UITableView基础的内容侧滑Cell的方法使用,之前写过OC语言的http://blog.csdn.net/hbblzjy/article/details/517 ...
- day22 yield的表达式的应用,面向过程编程,内置函数前几个
Python之路,Day10 = Python基础10 生成器表达式: (i for i in range(10) if i > 5)os.walk(r'文件路径')返回一个迭代器, 第一次ne ...
- iOS基础篇(十三)——UITableView(一)重用机制
UITableView是app开发中常用到的控件,功能很强大,常用于数据的显示.在学习UITableView使用之前,我们先简单了解一下: 1.UITableView的重用机制 UITableView ...
随机推荐
- php 获取汉字拼音首字母的函数
function getFirstChar($string){ if($string{0}>="A" and $string{0}<="z" )re ...
- lua的string库与强大的模式匹配
lua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库.lua的string函数导出在string module中.在lua5.1,同一时候也作为string类型的成 ...
- 《think in python》学习-6
think in python 有返回函数 我们使用过的内置函数中,有一部分会返回结果,比如 math的 返回值 我们写一个有返回值的函数,计算给定半径的圆的面积,例如这个: def area(rad ...
- nide.js(二)文件I/O
文件I/O fs模块的基本用法 node.js中提供一个名为fs的模块来支持I/O操作,fs模块的文件I/O是对标准POSIX函数的简单封装. 1.writeFile函数的基本用法 文件I/O,写入是 ...
- SQL SERVER中变量的定义、赋值与使用
本文面向对SQL SERVER中变量操作不熟悉的用户,希望能使他们在看完本文后能对变量操作有具体和全面的认识. 在学习SQL SERVER的过程中,很多时候需要对某些单独的值进行调试,这时就需 ...
- java与javac命令笔记
Java对待.java文件与.class文件是有区别的.对.java文件可以直接指定路径给它,而java命令所需的.class文件不能出现扩展名,也不能指定额外的路径给它,对于Java所需的.clas ...
- (跨平台)cocos2d-x C++ or Object-C(前端)调用C# webservices(后台),实现交叉编译到Android/IOS/WinPhone等移动终端设备
1.2014年4月2号算是正式找到自己的实习工作-杭州美迪软件有限公司(移动物联事业部)合作于:四川管家婆总部移动终端代理,由于在校选编程专业语言C#和在浙大网新培训课程(C#.Asp.net开发)缘 ...
- Linux系统管理员不可不知的命令:sudo
对Linux系统管理员或高级用户而言,sudo是必不可少的最重要的命令之一.当我们想要运行重要任务时,sudo提供了安全的提升权限.请耐心读本文,看看sudo能为你做些什么. sudo是个统管一切的命 ...
- SQLServer 中实现类似MySQL中的group_concat函数的功能
SQLServer中没有MySQL中的group_concat函数,可以把分组的数据连接在一起. 后在网上查找,找到了可以实现此功能的方法,特此记录下. SELECT a, stuff((SELECT ...
- 使用chrome调试xpath
使用chrome调试xpath 相信玩过爬虫的都知道一些库,如lxml(python),可以使用xpath方便地对HTML进行提取,但当真正用的时候,问题就来了,想找到一个元素往往要调试好几遍,而且得 ...