UITabView使用详解
在开发iphone的应用时基本上都要用到UITableView,这里讲解一下UITableView的使用方法及代理的调用情况
- (void)viewDidLoad { [super viewDidLoad]; //初始化数据 NSArray *array1_=@[@"张铁林",@"张国立",@"张国荣",@"张艺谋",@"张惠妹"]; NSArray *array2_=@[@"李小龙",@"李小路"]; NSArray *array3_=@[@"王刚"]; self.myDic=@{@"老张家":array1_, @"老李家":array2_, @"老王家":array3_}; UITableView *myTableView_=[[UITableView alloc] initWithFrame:CGRectMake(, ,, ) style:UITableViewStylePlain]; myTableView_.delegate=self; myTableView_.dataSource=self; //改变换行线颜色lyttzx.com myTableView_.separatorColor = [UIColor blueColor]; //设定Header的高度, myTableView_.sectionHeaderHeight=; //设定footer的高度, myTableView_.sectionFooterHeight=; //设定行高 myTableView_.rowHeight=; //设定cell分行线的样式,默认为UITableViewCellSeparatorStyleSingleLine [myTableView_ setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; //设定cell分行线颜色 [myTableView_ setSeparatorColor:[UIColor redColor]]; //编辑tableView myTableView_.editing=NO; [self.view addSubview:myTableView_]; //跳到指的row or section [myTableView_ scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:2inSection:] atScrollPosition:UITableViewScrollPositionBottom animated:NO]; } //指定有多少个分区(Section),默认为1 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [[self.myDic allKeys] count]; } //每个section底部标题高度(实现这个代理方法后前面 sectionHeaderHeight 设定的高度无效) -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return ; } //每个section头部标题高度(实现这个代理方法后前面 sectionFooterHeight 设定的高度无效) -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return ; } //每个section头部的标题-Header - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return [[self.myDic allKeys] objectAtIndex:section]; } //每个section底部的标题-Footer - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{ return nil; } //用以定制自定义的section头部视图-Header -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ return nil; } //用以定制自定义的section底部视图-Footer -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ UIImageView *imageView_=[[UIImageView alloc]initWithFrame:CGRectMake(, ,, )]; imageView_.image=[UIImage imageNamed:@"1000.png"]; return [imageView_ autorelease]; } //指定每个分区中有多少行,默认为1 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [[self.myDic objectForKey:[[self.myDic allKeys]objectAtIndex:section]]count]; } //改变行的高度(实现主个代理方法后 rowHeight 设定的高度无效) - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return ; } //绘制Cell -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: SimpleTableIdentifier] autorelease]; //设定附加视图 [cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton]; // UITableViewCellAccessoryNone, // 没有标示 // UITableViewCellAccessoryDisclosureIndicator, // 下一层标示 // UITableViewCellAccessoryDetailDisclosureButton, // 详情button // UITableViewCellAccessoryCheckmark // 勾选标记 //设定选中cell时的cell的背影颜色 cell.selectionStyle=UITableViewCellSelectionStyleBlue; //选中时蓝色效果 // cell.selectionStyle=UITableViewCellSelectionStyleNone; //选中时没有颜色效果 // cell.selectionStyle=UITableViewCellSelectionStyleGray; //选中时灰色效果 // // //自定义选中cell时的背景颜色 // UIView *selectedView = [[UIView alloc] initWithFrame:cell.contentView.frame]; // selectedView.backgroundColor = [UIColor orangeColor]; // cell.selectedBackgroundView = selectedView; // [selectedView release]; // cell.selectionStyle=UITableViewCellAccessoryNone; //行不能被选中 } //这是设置没选中之前的背景颜色 cell.contentView.backgroundColor = [UIColor clearColor]; cell.imageView.image=[UIImage imageNamed:@"1001.jpg"];//未选cell时的图片 cell.imageView.highlightedImage=[UIImage imageNamed:@"1002.jpg"];//选中cell后的图片 cell.textLabel.text=[[self.myDic objectForKey:[[self.myDicallKeys]objectAtIndex:indexPath.section]]objectAtIndex:indexPath.row]; return cell; } //行缩进 -(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{ NSUInteger row = [indexPath row]; return row; } //选中Cell响应事件 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{ [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失 //得到当前选中的cell UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath]; NSLog(@"cell=%@",cell); }
//已经选中行(常用)
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//作用:跳转下一个页面,并且把当前选中的单元格数据,传递过去
//寻找选中的单元格
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// //通过cell获取indexPath
// NSIndexPath *path = [tableView indexPathForCell:cell];
QYDetailInfoViewController *detailInfoVC = [[QYDetailInfoViewController alloc] init];
detailInfoVC.titleString = cell.textLabel.text;
[self.navigationController pushViewController:detailInfoVC animated:YES];
}
//行将显示的时候调用,预加载行
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"将要显示的行是\n cell=%@ \n indexpath=%@",cell,indexPath);
}
//选中之前执行,判断选中的行(阻止选中第一行)
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
if (row == )
return nil;
return indexPath;
}
//编辑状态,点击删除时调用
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
}
//cell右边按钮格式为UITableViewCellAccessoryDetailDisclosureButton时,点击按扭时调用的方法
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
NSLog(@"当前点击的详情button \n indexpath=%@",indexPath);
}
//右侧添加一个索引表
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
return [self.myDic allKeys];
}
//划动cell是否出现del按钮
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath*)indexPath {
return YES;
}
//设定横向滑动时是否出现删除按扭,(阻止第一行出现)
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row==) {
return UITableViewCellEditingStyleNone;
}
else{
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleDelete;
}
//自定义划动时delete按钮内容
- (NSString *)tableView:(UITableView *)tableView
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @"删除这行";
}
//开始移动row时执行
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath
{
NSLog(@"sourceIndexPath=%@",sourceIndexPath);
NSLog(@"sourceIndexPath=%@",destinationIndexPath);
}
//滑动可以编辑时执行
-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"willBeginEditingRowAtIndexPath");
}
//将取消选中时执行, 也就是上次先中的行
-(NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"上次选中的行是 \n indexpath=%@",indexPath);
return indexPath;
}
//让行可以移动
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath*)indexPath
{
return NO;
}
//移动row时执行
-(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath*)proposedDestinationIndexPath
{
NSLog(@"targetIndexPathForMoveFromRowAtIndexPath");
//用于限制只在当前section下面才可以移动
if(sourceIndexPath.section != proposedDestinationIndexPath.section){
return sourceIndexPath;
}
return proposedDestinationIndexPath;
}
UITabView使用详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- Java访问权限修饰符public protected friendly private用法总结(转载好文Mark)
首先声明:Java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly.为了条理清晰,分三种不同情况来总结. 一 访问权限修饰符修饰成员变量和 ...
- mysql 热备份
xtrabackup mysql 的备份和恢复 1.准备 安装依赖 yum install perl-DBD-MySQL perl-Time-HiRes libaio libaio-devel -y ...
- Oracle使用——oracle复制表
复制表结构和数据 create table table_name_new as select * from table_name_old; 复制表结构 ; 复制表数据(全量插入数据) 两个表结构相同 ...
- GlitchBot
问题 F: GlitchBot 时间限制: 1 Sec 内存限制: 128 MB 提交: 230 解决: 113 [提交] [状态] [命题人:admin] 题目描述 One of our del ...
- Oracle 客户端 NLS_LANG 的设置
参考链接1: https://blog.csdn.net/xinzhan0/article/details/78311417#t3 参考链接2: https://blog.csdn.net/xinzh ...
- flex属性导图
声明:部分图片转载自 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool
- http与rfc
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- Bean的Scope
Bean的scope: 1.Singleton(单例): 一个Spring容器只有以这个Bean实例. 2.prototype(多例): 每次调用新建一个Bean的实例. 3.request:一个ht ...
- CDI
CDI,JAVA用语 Java EE CDI 主要使用@Inject注解来实现依赖注入,把受管理的bean注入到由容器管理的其它资源中去.在本教程中,我们将会介绍在CDI环境下几种不同的可选策略来实现 ...
- Tomcat 中 jsp 中文乱码显示处理解决方案
原地址: http://blog.csdn.net/joyous/article/details/1504274 初学JSP,尤其是Tomcat环境(GlassFish默认UTF-8,则不存在此类问题 ...