ios基础篇(十四)——UITableView(二)属性及基本用法
上一篇说了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(二)属性及基本用法的更多相关文章
- ios基础篇(四)——UILabel的常用属性及方法
UILabel的常用属性及方法:1.text //设置和读取文本内容,默认为nil label.text = @”文本信息”; //设置内容 NSLog(@”%@”, label.text); //读 ...
- IOS基础之(十四) KVO/KVC
资料参考: http://www.cnblogs.com/kenshincui/p/3871178.html http://www.cnblogs.com/stoic/archive/2012/07/ ...
- Bootstrap入门(二十四)data属性
Bootstrap入门(二十四)data属性 你可以仅仅通过 data 属性 API 就能使用所有的 Bootstrap 插件,无需写一行 JavaScript 代码.这是 Bootstrap 中的一 ...
- python基础篇(四)
PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...
- 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...
- Java15-java语法基础(十四)抽象类
Java15-java语法基础(十四)抽象类 一.抽象类的作用 三个类都有"执行任务"的方法,分别在这三个类中进行定义,因此需要重复编写代码,降低了程序开发效率,且增加了程序出现错 ...
- ios基础篇(二十六)—— UITableViewCell的分组索引与标记
一.表视图的索引目录 首先要创建一个TableView,之前有说过,这里就不详细说了(参考前面第十四篇). 直接贴代码吧, #import "ViewController.h" @ ...
- linux基础-第十四单元 Linux网络原理及基础设置
第十四单元 Linux网络原理及基础设置 三种网卡模式图 使用ifconfig命令来维护网络 ifconfig命令的功能 ifconfig命令的用法举例 使用ifup和ifdown命令启动和停止网卡 ...
- ios基础篇(五)——UITextField的详细使用
UItextFieldField通常用于外部数据输入,以实现人机交互. 以下是UItextFieldField的属性及常见用法: 1.textField :设置文本框的默认文本. 2.Placehol ...
随机推荐
- vue.js慢速入门(2)
4.组件使用基础 什么是组件?组件可以理解为可重用的自定义HTML. 可以使用一堆组件来构造大型应用,任意类型的应用界面都可以抽象为一个组件树: 可以把组件代码按照template.style.scr ...
- WDR7500 花生壳问题
新进一WDR7500 居然不能解析花生壳. 百度一番, 发现别人有同样的问题. 找来找去从别人的只言片语中发现需要升级固件. 好不容易加入一个群, 把固件下下来. 升级固件, 重新设置, 解析成功. ...
- AppleWatch___学习笔记(一)开发思路和框架
一.开发须知 如果你没有开发过 iphone,直接来做watch,我建议你不要这么做,不是不可以,而是目前所有的第三方应用都必须基于iphone的扩展,原生的watch应用,苹果目前还没有开放给开发者 ...
- 关于webservice大数据量传输时的压缩和解压缩
当访问WebSerivice时,如果数据量很大,传输数据时就会很慢.为了提高速度,我们就会想到对数据进行压缩.首先我们来分析一下. 当在webserice中传输数据时,一般都采用Dataset进行数据 ...
- MSDTC故障排除
“由于 Microsoft 分布式事务处理协调器出现问题,因此无法连接到配置数据库. 该事务管理器已经禁止了它对远程/网络事务的支持". 第一步: 请确保iis(运行程序的机器)和sql ...
- 阿里云OneinStack,Linux下tomcat命令
阿里云OneinStack,Linux下tomcat命令 Linux下如何查看tomcat是否启动在Linux系统下,重启Tomcat使用命令操作的首先,进入Tomcat下的bin目录cd /usr/ ...
- vlc播放yuv文件
vlc.exe --demux rawvideo --rawvid-fps 25 --rawvid-width 480 --rawvid-height 272 --rawvid-chroma I420 ...
- Ajax中dataType数据类型
今天项目中使用Ajax向后台保存数据,其中dataType为'json';当请求成功后,没有走success回调,反而走了error:数据库已经成功保存数据了. 后来搞半天才知道原来dataType指 ...
- HTML5 aria- and role
HTML5 aria-* and role 在video-js的demo中看到了很多aria-*,不知道干嘛的.google一下,发现aria的意思是Accessible Rich Internet ...
- 《R语言实战》读书笔记-- 第六章 基本图形
首先写第二部分的前言. 第二部分用来介绍获取数据基本信息的图形技术和统计方法. 本章主要内容 条形图.箱型图.点图 饼图和扇形图 直方图和核密度图 分析数据第一步就是要观察它,用可视化的方式是最好的. ...