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 使用详解相关推荐

  1. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  2. IOS 多线程04-GCD详解 底层并发 API

    IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...

  3. iOS核心动画详解swift版----基础动画

    2019独角兽企业重金招聘Python工程师标准>>> iOS核心动画详解swift版---基础动画 创建工程,添加2个ViewController,通过rootViewContro ...

  4. tableview的详解

    一直想对对tableview 进行详解,但是一直没有坚持,好吧,废话少说,直接来干的 UITableView是 显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍 ...

  5. iOS教程:详解iOS多图下载的缓存机制

    ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cel ...

  6. iOS 内购详解-代码篇

    内购项目-代码篇 一.分步骤说明 1.获取商品列表 2.苹果服务器返回的可购买商品 3.下单购买商品 4.购买队列状态变化,判断购买状态是否成功 5.交易验证 6.拿到的收据信息是,此App所有购买的 ...

  7. ios NSFileManager 用法详解

    2019独角兽企业重金招聘Python工程师标准>>> iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileMana ...

  8. iOS runtime 底层详解、内部原理、场景应用

    前言学:位域和共用体 一:isa指针--runtime之前的学习 1.1:苹果应用的按位或.按位与 二:类对象信息 2.1:类对象信息:rw_t 2.2:类对象信息:方法缓存(很关键) 2.2:类对象 ...

  9. iOS开发- UICollectionView详解+实例

    本章通过先总体介绍UICollectionView及其常用方法,再结合一个实例,了解如何使用UICollectionView. UICollectionView 和 UICollectionViewC ...

最新文章

  1. 怎么注册今日头条?哪里可以直接购置?
  2. PLSQL_解析过程及硬解析和软解析的区别(案例)
  3. C# Regex(3)
  4. C#操作XML总结1
  5. maven项目下tomcat直接启动不了(LifecycleException)。报错如下截图
  6. ios RunLoop 用法
  7. 人脸特征值能存放在sql server中吗_SQL运行内幕:从执行原理看调优的本质
  8. iOS学习之 plist文件的读写
  9. C语言根号作用,c语言开根号(开根号编程)
  10. PS2模拟器 PCSX2 新手向
  11. 内存屏障 - MemoryBarrier
  12. P3966 [TJOI2013]单词(AC自动机,Trie图)
  13. 原生JS获取dom元素高度
  14. 那些在一个公司死磕了5-10年的人,最后都怎么样了?
  15. 字节跳动面经(2020春招)
  16. 最近的一些杂感-20220107
  17. 国产CPU架构、国产Linux操作系统及其国产数据库等关键应用
  18. 如何租房才不会被坑——复盘我租房之路
  19. Day01_操作系统概述
  20. 交通诱导屏坏点统计表2013-02-03.csv

热门文章

  1. java面向对象的理解_面向对象及其核心的概念:抽象、继承与多态、封装
  2. mysql 表与表之间的条件比对_十六年老司机笔记:MySQL性能优化之必备技能
  3. JDBC中给Mysql加时区问题!
  4. CSS3属性calc函数(CSS3)
  5. 实验3-3 比较大小 (10 分)
  6. 一个成型的awt所必须的frame组件
  7. css如何改变横线<hr/>标签的颜色
  8. Context与ApplicationContext
  9. 分布式Redis深度历险-复制
  10. nginx启动重启与升级以及检测配置文件