一,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)的更多相关文章

  1. UITableView 详解 ()

    (原本取至D了个L微信公众号) UITableView 详解 一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRec ...

  2. UITableView详解(2)

    承接上文,再续本文 一,首先我们对上次的代码进行改进,需要知道的一点是,滚动视图的时候,我们要创建几个视图,如果一个视图显示一个图片占据整个屏幕,对于滚动视图我们只需要创建三个视图就可以显示几千给图片 ...

  3. 【转】UITableView详解(UITableViewCell

    原文网址:http://www.kancloud.cn/digest/ios-1/107420 上一节中,我们定义的cell比较单一,只是单调的输入文本和插入图片,但是在实际开发中,有的cell上面有 ...

  4. UITableView详解(转)

    首先.对UITableView进行讲解,下面有对它进行实际的应用 UITableView 显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍存在于iPhone的应 ...

  5. UITableView 详解 教程

    看TableView的资料其实已经蛮久了,一直想写点儿东西,却总是因为各种原因拖延,今天晚上有时间静下心来记录一些最近学习的TableView的知识.下面进入正题,UITableView堪称UIKit ...

  6. UITableView详解

    一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(, , , )]; [DataTable setD ...

  7. 《iOS 7 应用开发实战详解》

    <iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...

  8. iPhone应用开发 UITableView学习点滴详解

    iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...

  9. IOS中表视图(UITableView)使用详解

    IOS中UITableView使用总结 一.初始化方法 - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)styl ...

随机推荐

  1. Help Me Escape (ZOJ 3640)

    J - Help Me Escape Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:32768KB ...

  2. ZooKeeper(3.4.5) 使用Curator监听事件

    转载:http://www.mamicode.com/info-detail-494364.html 标签: ZooKeeper原生的API支持通过注册Watcher来进行事件监听,但是Watcher ...

  3. Huffman树与编码的简单实现

    好久没写代码了,这个是一个朋友问的要C实现,由于不会C,就用JAVA写了个简单的.注释掉的代码属性按照原来朋友发的题里带的参数,发现没什么用就给注释掉了. package other; import ...

  4. [转]Windows的窗口刷新机制

    1.Windows的窗口刷新管理 窗口句柄(HWND)都是由操作系统内核管理的,系统内部有一个z-order序列,记录着当前窗口从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的排序 ...

  5. 智能手机Web开发笔记

    智能手机版(简称M版)前端开发终于告一段落,第一次做移动端开发,没有想象中那么难搞,但是期间也遇到了各种这样那样的问题,虽然从小日记都不是自己写的,但是开发笔记还是要自己写的,不敢说让别人学习,只是仅 ...

  6. ext afteredit

    ext afteredit详解 grid.on("afteredit",afterEidt,grid); function(obj) { obj.row;;//修改过的行从0开始 ...

  7. Python的神奇方法指南

    参考:http://article.yeeyan.org/view/311527/287706

  8. js 数组去除空值

    for(var i = 0 ;i<wordarr.length;i++)                {                    if(wordarr[i] == "& ...

  9. AngularJS 指令实践

    概述 如果你写过AngularJS的应用,那么你一定已经使用过指令,不管你有没有意识到.你肯定已经用过简单的指令,比如 ng-mode, ng-repeat, ng-show等.这些指令都赋予DOM元 ...

  10. 国内HTML5前端开发框架汇总

    国内HTML5前端开发框架汇总 Dawei Cheng 程大伟... 于 星期日, 02/12/2012 - 20:53 提交 国外很有多优秀的HTML5前端开发框架相信大家都耳熟能详:JQuery ...