iOS TableView 使用详解
IOS TableView 详解
一、建立 UITableView
DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)];[DataTable setDelegate:self];[DataTable setDataSource:self];[self.view addSubview:DataTable];[DataTable release];
二、UITableView各Method说明
//Section总数- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{return TitleData;}// Section Titles//每个section显示的标题- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{return @"";}//指定有多少个分区(Section),默认为1- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {return 4;}//指定每个分区中有多少行,默认为1- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{}//绘制Cell-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier: SimpleTableIdentifier] autorelease];}cell.imageView.image=image;//未选cell时的图片cell.imageView.highlightedImage=highlightImage;//选中cell后的图片cell.text=//.....return cell;}//行缩进-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{NSUInteger row = [indexPath row];return row;}//改变行的高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{return 40;}//定位[TopicsTable setContentOffset:CGPointMake(0, promiseNum * 44 + Chapter * 20)];//返回当前所选cellNSIndexPath *ip = [NSIndexPath indexPathForRow:row inSection:section];[TopicsTable selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionNone];[tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];//选中Cell响应事件- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{[tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失}//判断选中的行(阻止选中第一行)-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{NSUInteger row = [indexPath row];if (row == 0)return nil;return indexPath;}//划动cell是否出现del按钮- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {}//编辑状态- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath *)indexPath{}[topicsTable setContentSize:CGSizeMake(0,controller.promiseNum * 44)];//右侧添加一个索引表- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{}//返回Section标题内容- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{}//自定义划动时del按钮内容- (NSString *)tableView:(UITableView *)tableViewtitleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath//跳到指的row or section[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];
三、在UITableViewCell上建立UILable多行显示
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];if (cell == nil) {cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];UILabel *Datalabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 320, 44)];[Datalabel setTag:100];Datalabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;[cell.contentView addSubview:Datalabel];[Datalabel release];} UILabel *Datalabel = (UILabel *)[cell.contentView viewWithTag:100];[Datalabel setFont:[UIFont boldSystemFontOfSize:18]];Datalabel.text = [data.DataArray objectAtIndex:indexPath.row];cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;return cell;}//选中cell时的颜色typedef enum {UITableViewCellSelectionStyleNone,UITableViewCellSelectionStyleBlue,UITableViewCellSelectionStyleGray} UITableViewCellSelectionStyle //cell右边按钮格式typedef enum {UITableViewCellAccessoryNone, // don't show any accessory viewUITableViewCellAccessoryDisclosureIndicator, // regular chevron. doesn't trackUITableViewCellAccessoryDetailDisclosureButton, // blue button w/ chevron. tracksUITableViewCellAccessoryCheckmark // checkmark. doesn't track} UITableViewCellAccessoryType//是否加换行线typedef enum {UITableViewCellSeparatorStyleNone,UITableViewCellSeparatorStyleSingleLine} UITableViewCellSeparatorStyle//改变换行线颜色tableView.separatorColor = [UIColor blueColor];
iOS 使用tableView实现 个人中心列表
类似于微信的个人中心 可以使用UITableViewl来实现。
最终效果
直接上代码
首先使
UIViewController
实现协议
UITableViewDataSource,UITableViewDelegate
创建两个属性
UITableView *personalTableView;
NSArray *dataSource;
@interface UserInfoViewController ()<UITableViewDataSource,UITableViewDelegate>
{UITableView *personalTableView;NSArray *dataSource;}
初始化
personalTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 44+20, SCREEN_WIDTH, SCREEN_HEIGHT-20-44-49) style:UITableViewStyleGrouped];[self.view addSubview:personalTableView];personalTableView.delegate=self;personalTableView.dataSource=self;personalTableView.bounces=NO;personalTableView.showsVerticalScrollIndicator = NO;//不显示右侧滑块personalTableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;//分割线dataSource=@[@"我的分享",@"密码管理",@"用户协议",@"关于"];
实现一下几个代理
#pragma mark tableViewDelegate
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{//分组数 也就是section数return 3;
}//设置每个分组下tableview的行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{if (section==0) {return 1;}else if (section==1) {return dataSource.count;}else{return 1;}
}
//每个分组上边预留的空白高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{return 20;
}
//每个分组下边预留的空白高度
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{if (section==2) {return 40;}return 20;
}
//每一个分组下对应的tableview 高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{if (indexPath.section==0) {return 80;}return 40;
}//设置每行对应的cell(展示的内容)
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{static NSString *identifer=@"cell";UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:identifer];if (cell==nil) {cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];}if (indexPath.section==0) {cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"userinfo"];UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(12, 0, 80, 80)];imageView.image=[UIImage imageNamed:@"usericon.png"];[cell.contentView addSubview:imageView];UILabel *nameLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 0, 60, 80)];nameLabel.text=@"李晨";[cell.contentView addSubview:nameLabel];}else if (indexPath.section==1) {cell.textLabel.text=[dataSource objectAtIndex:indexPath.row];}else{cell.textLabel.text=@"退出登陆";cell.textLabel.textAlignment=NSTextAlignmentCenter;}return cell;
}
iOS TableView 使用详解相关推荐
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- IOS 多线程04-GCD详解 底层并发 API
IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...
- iOS核心动画详解swift版----基础动画
2019独角兽企业重金招聘Python工程师标准>>> iOS核心动画详解swift版---基础动画 创建工程,添加2个ViewController,通过rootViewContro ...
- tableview的详解
一直想对对tableview 进行详解,但是一直没有坚持,好吧,废话少说,直接来干的 UITableView是 显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍 ...
- iOS教程:详解iOS多图下载的缓存机制
ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cel ...
- iOS 内购详解-代码篇
内购项目-代码篇 一.分步骤说明 1.获取商品列表 2.苹果服务器返回的可购买商品 3.下单购买商品 4.购买队列状态变化,判断购买状态是否成功 5.交易验证 6.拿到的收据信息是,此App所有购买的 ...
- ios NSFileManager 用法详解
2019独角兽企业重金招聘Python工程师标准>>> iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileMana ...
- iOS runtime 底层详解、内部原理、场景应用
前言学:位域和共用体 一:isa指针--runtime之前的学习 1.1:苹果应用的按位或.按位与 二:类对象信息 2.1:类对象信息:rw_t 2.2:类对象信息:方法缓存(很关键) 2.2:类对象 ...
- iOS开发- UICollectionView详解+实例
本章通过先总体介绍UICollectionView及其常用方法,再结合一个实例,了解如何使用UICollectionView. UICollectionView 和 UICollectionViewC ...
最新文章
- 怎么注册今日头条?哪里可以直接购置?
- PLSQL_解析过程及硬解析和软解析的区别(案例)
- C# Regex(3)
- C#操作XML总结1
- maven项目下tomcat直接启动不了(LifecycleException)。报错如下截图
- ios RunLoop 用法
- 人脸特征值能存放在sql server中吗_SQL运行内幕:从执行原理看调优的本质
- iOS学习之 plist文件的读写
- C语言根号作用,c语言开根号(开根号编程)
- PS2模拟器 PCSX2 新手向
- 内存屏障 - MemoryBarrier
- P3966 [TJOI2013]单词(AC自动机,Trie图)
- 原生JS获取dom元素高度
- 那些在一个公司死磕了5-10年的人,最后都怎么样了?
- 字节跳动面经(2020春招)
- 最近的一些杂感-20220107
- 国产CPU架构、国产Linux操作系统及其国产数据库等关键应用
- 如何租房才不会被坑——复盘我租房之路
- Day01_操作系统概述
- 交通诱导屏坏点统计表2013-02-03.csv