上一篇说了UITableView的重用机制,让我们对UITableView有了简单了解,下面说说UITableView的属性及常见方法。

一、属性

1、frame:设置控件的尺寸和大小

2、backgroundColor:设置控件的颜色

3、style:获取表视图的样式

4、dataSource:设置UITableViewDataSource代理

5、delegate:设置UITableViewDelegate代理

6、backgroundView:设置背景视图

7、editing:是否允许编辑,默认为NO

8、sectionHeaderHeight:设置组表视图的头标签高度

9、sectionFooterHeight:设置组表视图的尾标签高度

10、allowsSelection:在非编辑下,行是否可以选中,默认YES

11、allowsSelectionDuringEditing:控制某一行时,是否可以编辑,默认NO

12、allowsMultipleSelection:是否可以选择多行,默认NO

13、allowsMutableSelectionDuringEditing:在选择多行的情况下,是否可以编辑,默认NO

14、sectionIndexTrackingBackgroundColor:设置选中部分的背景颜色

15、sectionIndexMinimumDisplayRowCount:显示某个组索引列表在右边当行数达到这个值,默认是NSInteger的最大值

16、sectionIndexColor:选择某个部分的某行改变这一行上文本的颜色

17、separatorStyle:设置单元格分隔线的样式

18、separatorColor:设置选中单元格分隔线的颜色

19、tableHeaderView:设置组表的头标签视图

20、tableFooterView:设置组表的尾标签视图

二、常见方法

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

tableview 有多少个section

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

     return ;

 }

2、- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;

对应的section有多少行

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

     return ;
}

3、- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;——返回指定的 row 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;——返回指定的 section的header view 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;——返回指定的 section的footer view 的高度

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 6;
} - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return ;
} - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return ;
}

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

返回指定的row 的cell,可以返回自定义的cell;

这里只看看最基本的用法:

 - (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath{

     static NSString *Indentifier = @"UITableViewCell";
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Indentifier];
} //移除所有子视图
[cell.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIView *view = (UIView*)obj;
[view removeFromSuperview];
}]; //添加新视图
UILabel *label = [[UILabel alloc]initWithFrame:(CGRect){,,,}];
label.text = [NSString stringWithFormat:@"第%d行",(int)indexPath.row];
[cell addSubview:label]; UIImageView *imageIcon = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
imageIcon.image = [UIImage imageNamed:@"u=3971024035,4095552302&fm=21&gp=0"];
[cell addSubview:imageIcon]; return cell; }

如图:

5、- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

返回指定的section 的 header  的 title,如果这个section header  有返回view,那么title就不起作用了。

 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if (section==) {
return @"标题一";
}else
return @"标题二"; }

如图:

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

同理设置FooterView:- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;

返回指定的 section header 的view,如果没有,这个函数可以不返回view

注意:设置了headerView一定不要忘记返回高度!

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headerView = [[UIView alloc] initWithFrame:(CGRect){,,,}]; UILabel *title = [[UILabel alloc] initWithFrame:(CGRect){,,,}];
title.text = @"headerView";
title.textColor = [UIColor orangeColor];
title.textAlignment = NSTextAlignmentCenter;
[headerView addSubview:title]; UIImageView *headImage = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
headImage.image =[UIImage imageNamed:@"u=1522827729,398642494&fm=21&gp=0"];
[headerView addSubview:headImage]; return headerView;
} - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return ;
}

如图:

7、 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

当用户选中某个行的cell的时候,回调用这个。但是首先,必须设置tableView.allowsSelection = YES 才行。

 - (void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section==) {
switch (indexPath.row) {
case :
//点击每行想实现什么动作写在这里就好了
break; default:
break;
}
}
}

下面附上完整代码:

 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{

     UITableView *tableView;
NSArray *dataArray; } @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. //初始化,设置位置大小
tableView = [[UITableView alloc] initWithFrame:(CGRect){,,self.view.frame.size.width,self.view.frame.size.height}];
//添加到视图
[self.view addSubview:tableView];
//设置UITableViewDeledate代理
tableView.delegate = self;
//设置UITableViewDataSource代理
tableView.dataSource = self;
//设置单元格分隔线样式
tableView.separatorStyle = UITableViewCellSeparatorStyleNone; tableView.allowsSelection = YES; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return ;
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return ;
} - (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *Indentifier = @"UITableViewCell";
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Indentifier];
} //移除所有子视图
[cell.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIView *view = (UIView*)obj;
[view removeFromSuperview];
}]; //添加新视图
UILabel *label = [[UILabel alloc]initWithFrame:(CGRect){,,,}];
label.text = [NSString stringWithFormat:@"第%d行",(int)indexPath.row];
[cell addSubview:label]; UIImageView *imageIcon = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
imageIcon.image = [UIImage imageNamed:@"u=3971024035,4095552302&fm=21&gp=0"];
[cell addSubview:imageIcon]; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return ; } //- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
// if (section==0) {
// return @"标题一";
// }else
// return @"标题二";
//
//} - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headerView = [[UIView alloc] initWithFrame:(CGRect){,,,}]; UILabel *title = [[UILabel alloc] initWithFrame:(CGRect){,,,}];
title.text = @"headerView";
title.textColor = [UIColor orangeColor];
title.textAlignment = NSTextAlignmentCenter;
[headerView addSubview:title]; UIImageView *headImage = [[UIImageView alloc] initWithFrame:(CGRect){,,,}];
headImage.image =[UIImage imageNamed:@"u=1522827729,398642494&fm=21&gp=0"];
[headerView addSubview:headImage]; return headerView;
} - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return ;
} - (void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section==) {
switch (indexPath.row) {
case :
//点击每行想实现什么动作写在这里就好了
break; default:
break;
}
}
}

ios基础篇(十四)——UITableView(二)属性及基本用法的更多相关文章

  1. ios基础篇(四)——UILabel的常用属性及方法

    UILabel的常用属性及方法:1.text //设置和读取文本内容,默认为nil label.text = @”文本信息”; //设置内容 NSLog(@”%@”, label.text); //读 ...

  2. IOS基础之(十四) KVO/KVC

    资料参考: http://www.cnblogs.com/kenshincui/p/3871178.html http://www.cnblogs.com/stoic/archive/2012/07/ ...

  3. Bootstrap入门(二十四)data属性

    Bootstrap入门(二十四)data属性 你可以仅仅通过 data 属性 API 就能使用所有的 Bootstrap 插件,无需写一行 JavaScript 代码.这是 Bootstrap 中的一 ...

  4. python基础篇(四)

    PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...

  5. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  6. Java15-java语法基础(十四)抽象类

    Java15-java语法基础(十四)抽象类 一.抽象类的作用 三个类都有"执行任务"的方法,分别在这三个类中进行定义,因此需要重复编写代码,降低了程序开发效率,且增加了程序出现错 ...

  7. ios基础篇(二十六)—— UITableViewCell的分组索引与标记

    一.表视图的索引目录 首先要创建一个TableView,之前有说过,这里就不详细说了(参考前面第十四篇). 直接贴代码吧, #import "ViewController.h" @ ...

  8. linux基础-第十四单元 Linux网络原理及基础设置

    第十四单元 Linux网络原理及基础设置 三种网卡模式图 使用ifconfig命令来维护网络 ifconfig命令的功能 ifconfig命令的用法举例 使用ifup和ifdown命令启动和停止网卡 ...

  9. ios基础篇(五)——UITextField的详细使用

    UItextFieldField通常用于外部数据输入,以实现人机交互. 以下是UItextFieldField的属性及常见用法: 1.textField :设置文本框的默认文本. 2.Placehol ...

随机推荐

  1. linux下用户账户切换

    1,)当前我已经登录一个用户hadoop,我怎么切换到root账户呢(应为一般用户经常会遇到无权限修改/etc/hosts./ect/hostname等文件的权限)? 使用命令sudo su root ...

  2. EXCEL导入导出自己整理的一些方法

    //导入Excel代码 protected DataTable ExcelHelper(string filePaht) { string sFilePath2003 = Server.MapPath ...

  3. s3c2440 mpll

    S3C2440有两个PLL(phase locked loop)一个是MPLL,一个是UPLL.MPLL用于CPU及其他外围器件,UPLL用于USB.用于产生FCLK, HCLK, PCLK三种频率, ...

  4. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. Android应用权限管理总结

      访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permi ...

  6. phpcms V9 数据模型基类

    在学习<phpcms V9首页模板文件解析>的第七步,我们看到content_model类,文件路径:phpcms/model/content_model.class.php 从代码中,可 ...

  7. Web服务端软件的服务品质概要

    软件品质概述 提供同样功能.产品和服务的服务者中, 竞争力来自功能的多样化和服务品质的差异化, 无论是个体.企业还是国家. 这里的服务指功能.产品的实现程度和处理能力,以及研发/客服提供的技术支持程度 ...

  8. 五、Standard Controllers

    1.standardController:标准的controller 是同页面的standard Object的界面button的功能和逻辑是一样的<apex:page standardCont ...

  9. WordPress 添加Meta Box的方法步骤

    需要使用到add meta boxes Action,该Action允许我们为任何文章类型注册Meta Box,在该Action中,我们需要使用add_meta_box()方法来添加Meta Box的 ...

  10. Tiny Rss简明安装与配置笔记

    对于某些自己喜欢的却没有RSS订阅功能的网站,可以通过Feed43定制抓取规则来获取所需信息.但由于其服务器在国外,抓取时常失败,且免费账户抓取频率太低,遂仿造他自行实现了一个并挂到服务器上,然后通过 ...