UITableView详解(1)
一,UITableView控件使用必备,红色部分是易错点和难点
首先创建一个项目,要使用UITableView就需要实现协议<UITableViewDataSource>,数据源协议主要完成对tableView外观设置,必须实现的方法有两个:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
着重理解:UITableViewDataSource是数据源协议,主要控制tableView设置的数据,比如行高,页眉页脚,分组等
1,首先在ViewController里面实例化UITableView
- (void)viewDidLoad
{
[super viewDidLoad];
UITableView *tableView=[[UITableView alloc]initWithFrame:self.view.bounds];
tableView.dataSource=(id)self;
[self.view addSubview:tableView];
// Do any additional setup after loading the view, typically from a nib.
}
2,实现必须的两个方法
这个方法主要实现在每个section里面有几行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 14;
}
这个是在每行里面创建cell
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
cell.backgroundColor=[UIColor grayColor];
return cell;
}
3,其他常用方法
设置在tableView中有几个section
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 4;
}
这样就完成了一个最简单的tableview
//------------------------------------------------------------------------------------------------------
4,进阶练习
下面的例子中aa,bb数组可以是省份数组,这样就可以对省份进行分组简单应用,本例子简单,一看就应该明白
- (void)viewDidLoad
{
[super viewDidLoad];
//创建两个数组,实际应用中可以是任何数据源,此处为了练习分组
_aa=[NSArray arrayWithObjects:@"11",@"22", nil];
_bb=[NSArray arrayWithObjects:@"QQ",@"DD",@"EE",@"FF", nil];
//首先必须实例化一个tableView对象,然后加入到根视图
_bb=[NSArray arrayWithObjects:@"QQ",@"DD",@"EE",@"FF", nil];
UITableView *tableView=[[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];这里的style一共有两种格式,另一个是UITableViewStylePlain平铺模式,分组模式一般都是在多个section的时候才使用,运行此程序看看两者的区别
tableView.dataSource=(id)self;//此处是最容易忘记添加的地方,如果没有这个部分的声明,下面的代理方法都没用.
[self.view addSubview:tableView];
// Do any additional setup after loading the view, typically from a nib.
}
//ios系统赋予的内存警告,如果内存不够用的时候会触发此方法
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//设置tableView中section的个数,也就是分组个数
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
//每组的行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//如果是0 section,则在第一部分显示aa数组里的内容
if (section==0) {//如果是第一组,则返回aa数组中的个数
return self.aa.count;
}//如果是1 section,则在第二部分显示bb数组里的内容更
else if(section==1)
return self.bb.count;
return 14;
}
//创建cell,当滚动的时候也会触发此方法,可以动态生成cell,节约系统资源,后面会详解
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
if (indexPath.section==0) {
cell.textLabel.text=self.aa[indexPath.row];
}
else if(indexPath.section==1)cell.textLabel.text=self.bb[indexPath.row];
cell.backgroundColor=[UIColor grayColor];
return cell;
}
@end
运行以上程序查看效果如图:
查看手机会发现很多应用的分组都有标题,如下(阅读列表),还有页脚(使用....)这些都是可以设置的,以上程序运行出来之后,我们来扩展页眉页脚
//此方法返回字符串,这个字符串就是放在页眉部分的字
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return section==0?@"aa数组内容":@"bb数组内容";
}
//此方法返回字符串,这个字符串就是放在页脚部分的字
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return section==0?@"aa数组页脚":@"bb数组页脚";
}
UITableView详解(1)的更多相关文章
- UITableView 详解 ()
(原本取至D了个L微信公众号) UITableView 详解 一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRec ...
- UITableView详解(2)
承接上文,再续本文 一,首先我们对上次的代码进行改进,需要知道的一点是,滚动视图的时候,我们要创建几个视图,如果一个视图显示一个图片占据整个屏幕,对于滚动视图我们只需要创建三个视图就可以显示几千给图片 ...
- 【转】UITableView详解(UITableViewCell
原文网址:http://www.kancloud.cn/digest/ios-1/107420 上一节中,我们定义的cell比较单一,只是单调的输入文本和插入图片,但是在实际开发中,有的cell上面有 ...
- UITableView详解(转)
首先.对UITableView进行讲解,下面有对它进行实际的应用 UITableView 显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍存在于iPhone的应 ...
- UITableView 详解 教程
看TableView的资料其实已经蛮久了,一直想写点儿东西,却总是因为各种原因拖延,今天晚上有时间静下心来记录一些最近学习的TableView的知识.下面进入正题,UITableView堪称UIKit ...
- UITableView详解
一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(, , , )]; [DataTable setD ...
- 《iOS 7 应用开发实战详解》
<iOS 7 应用开发实战详解> 基本信息 作者: 朱元波 管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...
- iPhone应用开发 UITableView学习点滴详解
iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...
- IOS中表视图(UITableView)使用详解
IOS中UITableView使用总结 一.初始化方法 - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)styl ...
随机推荐
- translatesAutoresizingMaskIntoConstraints
如果是从代码层面开始使用Autolayout,需要对使用的View的translatesAutoresizingMaskIntoConstraints的属性设置为NO,即可开始通过代码添加Constr ...
- Java 集合系列 08 Map架构
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 如何做好一位资深的web前端工程师
Web前端开发工程师是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过5年.Web前端开发是从网页制作演变而来的,名称上有很明 显的时代特征.在互联网的演化进程中,网页制作是Web 1.0 ...
- java json 的生成和解析 --json-lib
类(java json的解析和生成): import java.util.HashMap; import java.util.Map; import net.sf.json.JSONArray; im ...
- MySQL索引实现
摘自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现 ...
- 《算法导论》笔记---附录 B.5 树
遇到同样的问题,在豆瓣上转过来记录下. 以下内容转自:http://book.douban.com/annotation/16409380/ -------------------分割线------- ...
- DOM系列---进阶篇【转】
内容提纲: 1.DOM类型 2.DOM扩展 3.DOM操作内容 一.DOM类型 DOM基础篇中,我们了解了DOM的节点并且了解怎样查询和操作节点,而本身这些不同的节点,又有着不同的类型. DOM类 ...
- 如何创建一个客户端回调:js获得服务端的内容?
答案:表面上看去就是前端的js调用服务的C#方法,本质就是ajax,通过XMLHttpRequest对象和服务端进行交互.回调:就说回过头来调用,按理说js是一种脚本语言,怎么能用来调用服务端的呢?就 ...
- CSS从今以后不用发愁
Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. Bootstrap3中文文档 Bootstrap2中文文档 http://www.bootcss.com/
- MySql避免全表扫描【转】
原文地址:http://blog.163.com/ksm19870304@126/blog/static/37455233201251901943705/ 对查询进行优化,应尽量避免全表扫描,首先应考 ...