表视图 UITableView,iOS中最重要的视图,随处可⻅见。 表视图通常⽤用来管理⼀一组具有相同数据结构的数据。

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

表视图的创建(重要属性)

style样式:plain、group
分隔线样式:separatorStyle
分隔线颜色:separateColor
行高: rowheight
去掉点击后产生的灰色背景色:cell.selectionStyle=UITableViewCellSelectionStyleNone;

DataSource数据源

我们需要给tableView指定⼀一个数据源,它负责给tableView提供数据 需要实现协议中两个必须实现的⽅方法

- (NSInteger)tableView:(UITableView *)tableView

我们需要给tableView指定⼀一个数据源,它负责给tableView提供数据

需要实现协议中两个必须实现的⽅方法:

-numberOfRowsInSection:(NSInteger)section;

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

UITableView中每⼀一个单元格,被称为⼀一个cell

(UITableViewCell)。 系统预置了4种(枚举)样式的cell。 不同样式的cell包含的控件有细微差别。

 
设置图片:imageView
设置文本:textLable
指定选中效果:selectionStyle
指定辅助效果样式:accessoryType

表视图的重用机制

UITableView靠mutableSet来实现重⽤用功能

出屏幕的cell会被添加到mutableSet中,进⼊入屏幕的cell,先从set中 获取,如果获取不到,才创建⼀一个cell。在cell显⽰示之前,给cell赋上相应的内容。

cell的reuseIdentifier是重⽤用的关键。

表视图的配置

NSIndesPath: row 、section

+(NSIndesPath *)indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section;

多个分区

tableView默认是⼀一个分区,可以设置多个分区 tableView的plain、group样式决定分区的样式不同

每个分区可以设置区头区尾

tableView默认是⼀一个分区,可以设置多个分区
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView; //分区数

- (NSString *)tableView:(UITableView *)tableView

tableView的plain、group样式决定分区的样式不同

titleForHeaderInSection:(NSInteger)section; //分区头标题

 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView; //右侧竖排索引

自定义头尾


Delegate

- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView
heightForFooterInSection:(NSInteger)section;
- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section;
- (UIView *)tableView:(UITableView *)tableView
viewForFooterInSection:(NSInteger)section;

自定义头尾

单元格的高度与选中

Delegate

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

单元格的高度与选中

参考1  参考2  参考3

 
代码:
#import "ViewController.h"

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
self.tableView.rowHeight = ; // 设置tableView的分割线的样式
// self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;//不是很明显的线
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;//比较明显的线条
// self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;//没有分割线 //设置分割线的背景颜色
self.tableView.separatorColor = [UIColor redColor];
//设置分割线的左右距离
self.tableView.separatorInset = UIEdgeInsetsMake(, , , );
//分割线的宽度 ??? /**
下面的两个:一个表头,一个表尾都是与分组没有任何关系的,只与tableView 的顶部与下部有关系
*/
//设置一下表头的视图,一般用来做一个轮播图片,这个图片要在表头的上面
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(, , self.view.bounds.size.width, )];
view.backgroundColor = [UIColor blueColor];
self.tableView.tableHeaderView = view; //设置一下表尾的视图,一般用于上拉刷新,这个要在表尾标题的下面
UIView * view2 = [[UIView alloc] initWithFrame:CGRectMake(, , self.view.bounds.size.width, )];
view2.backgroundColor = [UIColor redColor];
self.tableView.tableFooterView = view2; } //设置表的表头的标题
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return @"我是表头标题";
}
//设置表的表尾巴的标题
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
return @"我是表的表尾巴";
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return ;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
//添加的cell右边的 button
cell.accessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd]; //添加cell右边的 按钮
// cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //添加 cell右边的对号,用于提示用户完成一定的操作
// cell.accessoryType = UITableViewCellAccessoryCheckmark; //添加 cell 右边的 按钮 + 箭头
// cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; //添加cell 一个 switch 控件
// UISwitch * swit = [[UISwitch alloc] init];
// cell.accessoryView = swit;
// [swit addTarget:self action:@selector(valuechange:) forControlEvents:UIControlEventValueChanged]; /*
//设置cell 的背景颜色
UIImage * image = [UIImage imageNamed:@"img_01.png"];
UIImage * image2 = [UIImage imageNamed:@"img_02.png"];
cell.backgroundView = [[UIImageView alloc] initWithImage:image];//没有选中
//选中
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:image2];
*/ cell.textLabel.text = @"你舅舅家";
return cell;
}
-(void)valuechange:(UISwitch *)swit{
NSLog(@"选择改变了");
} //专门为accessoryType服务,对自定义控件不响应
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
NSLog(@"我是cell 右边的按钮");
} //取消选中行的事件
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"取消点击事件");
}
//点中某一cell 的事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"确实选中了某一行");
} -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return ;
} @end

tableView 应用demo

UI:UITableView表视图的更多相关文章

  1. UI学习笔记---第十天UITableView表视图编辑

    UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手 ...

  2. UI学习笔记---第九天UITableView表视图

    UITableView表视图 一.表视图的使用场景 表视图UITableView是iOS中最重要的视图,随处可见,通常用来管理一组具有相同数据结构的数据 表视图继承自UIScrollView,所以可以 ...

  3. UITableView表视图以及重建机制

    表视图UITableView   表视图UITableView,是IOS中最重要的视图,随处可见 表视图通常用来管理一组具有相同数据结构的数据 UITableView继承自UIScrollView,所 ...

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

    自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代 ...

  5. UI基础:UITableView表视图

    表视图 UITableView,iOS中最重要的视图,随处可见. 表视图通常用来管理一组具有相同数据结构的数据. UITableView继承于UIScrollView,所以可以滚动 表视图的每条数据都 ...

  6. UITableView 表视图编辑

    UITableViewController(表视图控制器)继承自UIViewController,自带一个tableView self.view不是UIView而是UITableView dataso ...

  7. iOS UITableView表视图滚动隐藏UINavigationController导航栏

    UITableView 继承于UIScrollView 所以UIScrollView 的代理方法相同适用于UITableView 中 隐藏导航栏的方法为: self.navigationControl ...

  8. IOS开发之表视图(UITableView)

    IOS开发之表视图(UITableView)的基本介绍(一) (一):UITableView的基本概念 1.在IOS开发中,表视图的应用十分广泛和普及.因此掌握表视图的用法显得非常重要.一般情况下对于 ...

  9. IOS 表视图UITableView 束NSBundle

    今天搞了一下表视图UITableView 表视图是在以后应用程序开发中经常用到的一个视图,所以必须要熟练掌握 所获不多,对视图有了一个大概的了解 其中有用到NSBundle , 束   这个类 先说一 ...

随机推荐

  1. yaf框架流程四

    在前面的章节,在bootstrap里添加了一个benchmark插件,简单介绍下yaf的插件机制:http://yaf.laruence.com/manual/yaf.plugin.html Yaf定 ...

  2. HDU 5038 Grade

    解题思路:这题最关键的是要读懂题意,If not all the value are the same but the frequencies of them are the same, there ...

  3. 【英语】Bingo口语笔记(34) - Hit系列

    hit it off 合得来 hit the bottle 喝醉酒 hit the spot 正合要求,恰到好处

  4. 《Write Optimized B-Trees》读书报告

    论文原作者:Goetz Graefe, Microsoft.我读完这篇论文后颇有收获,所以写了一篇论文报告,旨在更精炼准确地阐述论文核心思想. 摘要:论文提出了一种方法,这种方法可以优化B树索引写性能 ...

  5. 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得

    iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...

  6. 用list<类>集合接收一个网址返回的一个类的集合的XML

    JavaScriptSerializer serializer = new JavaScriptSerializer(); string json = Share.Helper.HttpRequest ...

  7. Codeforces Round #214 (Div. 2) c题(dp)

    C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. HDU5800 To My Girlfriend 背包计数dp

    分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...

  9. testng之listener

    这周在给人培训selenium+testng框架时,讲到listener这块发现对listener并没有完全了解,于是自己又重新学习了下. 以下是 TestNG 提供的几种监听器: IAnnotati ...

  10. Loadrunner 性能指标定位系统瓶颈

    判断CPU瓶颈 1, %processor time 平均值大于95 2, processor queue length大于2 (大于处理器个数+1).可以确定CPU瓶颈 3, CPU空闲时间为零(z ...