UI第九、第十、第十一课UITableView

主要内容:UITableView

一、表视图

UITableView表示图:通常用来管理一组具有相同数据结构的数据

UITableView继承与UIScrollView,所有可以滚动,表示图的每一个数据都显示在UITableViewCell对象中,表示图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0开始

二、表示图的创建

每一行中要显示的数据,需要有一个数据源DataSource

那么需要遵守两个协议:

- (NSInteger)tableView:(UITableVIew *)tableView  numberOfRowsInSection:(NSInteger)section;每个分区有多少行

- (UITableViewCell *)tableView:(UITableView *)tableView  cellForRowsAtIndexPath:(NSIndexPath *)indexPath;每行显示的内容

但是我们写的时候都会在前面先实现这个方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

UITableView中每一个单元格被称为一个cell(UITableViewCell),系统预置了4中样式的Cell(枚举类型)

重用机制:

靠mutableSet实现重用机制

出屏幕的Cell会呗添加到mutableSet中,进入屏幕的Cell,先从set中获取,如果获取不到,才创建一个cell,在cell显示之前,给cell赋上相应的内容,cell的reuseIdentifier是重用的关键

三、UITableView编辑

cell的添加、删除

编辑的步骤:

1、让tableView处于编辑状态

- (void)setEditing:(BOOL)editing  animated:(BOOL)animated;

2、指定tableview哪些行可以编辑

- (BOOL)tableView:(UITableView *)tableView  canEditRowAtIndexPath:(NSIndexPath *)indexPath;

3、指定tableView的编辑样式

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView  editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;

4、编辑完成(先操作数据源、在修改UI)

- (void)tableView:(UITableView *)tableView  commitEditingStyle:(UITableViewCellEditingStyle *)editingStyle  forRowIndexPath:(NSIndexPath *)indexPath;

移动的步骤:

1、让tableview处于编辑状态

- (void)setEditing:(BOOL)editing  animated:(BOOL)animated;

2、指定哪些行可以移动

- (BOOL)tableView:(UITableView *)tableView  canMoveRowAtIndexPath:(NSIndexPath *)indexPath;

3、移动完成

- (void)tableView:(UITableView *)tableView  moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath  toIndexPath:(NSIndexPath *)destinationIndexPath;

移动过程中,检测移动过程,限制跨区移动

- (NSIndexPath *)tableView:(UITableView *)tableView  targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath  toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath;

UITableView的方法

设置有多少个分区

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

设置每个分区有多少行

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

设置每行显示的内容

- (UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath;

设置分区头标题

- (NSString *)tableView:(UITableView)tableView  titleForHeaderInSection:(NSInteger)section;

设置右侧索引

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;

设置头标题的高度

- (CGFloat)tableView:(UITableView *)tableView  heightForHeaderInSection:(NSInteger)section;

设置尾标题的高度

- (CGFloat)tableView:(UITableView *)tableView  heightForFooterInSection:(NSInteger)section;

设置头标题内显示的View

- (UIView *)tableView:(UITableView *)tableView  viewForHeaderInSection:(NSInteger)section;

设置尾标题内显示的View

- (UIView *)tableView:(UITableView *)tableView  viewForFooterInSection:(NSInteger)section;

设置每行的高度及选中

- (void)tableView:(UITableView *)tableView  didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

- (void)tableView:(UITableView *)tableView  heightForRowAtIndexPath:(NSIndexPath *)indexPath;

时间: 2024-10-07 06:38:50

UI第九、第十、第十一课UITableView的相关文章

【程序设计基础】第九、十、十一章 综合实例分析 递归

实例分析: 闰年算法变化 1 resule:=0 2 if (y mod 400=0) or ((y mod 4=0) and (y mod 100<>0)) 3 then result:=1 4 return(result) if (y mod 400=0) or ((y mod 4=0) and (y mod 100<>0)) then result:=1 else result:=0 return(result) result:= (y mod 400=0) or ((y m

UI学习笔记---第十一天UITableView表视图高级-自定义cell

自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代码 cell中的空间如何显示Model中的信息 cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性 cell中重写Model的setter方法,把Model对象中的内容重新赋值给各个控件 M和V不直接通信,C负责M和V之间进行通

【C++探索之旅】第一部分第十一课:小游戏,猜单词

内容简介 1.第一部分第十一课:小游戏,猜单词 2.第一部分第十二课预告:指针一出,谁与争锋 小练习 上一课<[C++探索之旅]第一部分第十课:文件读写,海阔凭鱼跃>中我们学习了读写文件的知识. 第一部分的课程也快接近尾声了,下一课我们会学习很重要的指针的知识.之后,我们就进入第二部分:面向对象编程了.哈哈哈,激动不? 目前为止,我们也学了不少内容:编译基本原理,IDE,变量,函数,条件语句,循环语句,引用,数组,文件读写,等等.你应该为自己感到自豪. 俗语说得好:实践是最好的老师.我们学了那

centos LNMP第二部分nginx、php配置 第二十四节课

centos  LNMP第二部分nginx.php配置  第二十四节课 上半节课 下半节课 f

centos mysql 优化 第十九节课

centos mysql  优化  第十九节课 f

centos mysql 优化 第十六节课

centos mysql  优化  第十六节课 f

七月算法-12月机器学习在线班--第十八次课笔记-条件随机场CRF

七月算法-12月机器学习在线班--第十八次课笔记-条件随机场CRF 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 1,对数线性模型 一个事件的几率odds,是指该事件发生的概率与该事件不发生的概率的比值. 1.1对数线性模型的一般形式 令x为某样本,y是x的可能标记,将Logistic/ Softmax回归的特征 记做 特征函数的选择:eg: 自然语言处理 1, 特征函数几乎可任意选择,甚至特征函数间重叠: 2, 每个特征之和当前的词

第九、十周周记

第九.十周周记: 这两周完成了 1.学习了JavaScript网页设计,学习了更多的代码,网页设计更有趣了,掌握全代码方式的设计,掌握了更多的功能等. 2.学习了数据结构的树与二叉树,以及如何写代码. 3.学会了绘制计算机网络基础的代码设置等. 希望能够加倍努力,收获成长.Don't lose your heart,never give up. 周数 专业学习目标 专业学习时间 新增代码量 博客发表量 人文方面的学习 知识技能总结 第 五 周 学习JavaScript网页设计,学习了更多的代码,

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f