`
sgm881218
  • 浏览: 58469 次
社区版块
存档分类
最新评论

UITableView使用

    博客分类:
  • ios
阅读更多

UITableView使用

- (void)viewDidLoad
{
    [super viewDidLoad];
    //初始化数据
    NSArray *array1_=@[@"张铁林",@"张国立",@"张国荣",@"张艺谋",@"张惠妹"];
    NSArray *array2_=@[@"李小龙",@"李小路"];
    NSArray *array3_=@[@"王刚"];
    self.myDic=@{@"老张家":array1_, @"老李家":array2_, @"老王家":array3_};

    
    UITableView *myTableView_=[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStylePlain];
    myTableView_.delegate=self;
    myTableView_.dataSource=self;
    //改变换行线颜色lyttzx.com
    myTableView_.separatorColor = [UIColor blueColor];
    //设定Header的高度,
    myTableView_.sectionHeaderHeight=50;
    //设定footer的高度,
    myTableView_.sectionFooterHeight=100;
    //设定行高
    myTableView_.rowHeight=100;
    //设定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:2 inSection:2]
                     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 20;
}

//每个section头部标题高度(实现这个代理方法后前面 sectionFooterHeight 设定的高度无效)
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 20;
}

//每个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(0, 0, 320, 20)];
    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 100;
}


//绘制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.myDic allKeys]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 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 == 0)
        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==0) {
        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;
}

 

0
0
分享到:
评论

相关推荐

    Iphone-UITableView使用

    在`Iphone-UITableView使用`这个主题中,我们将深入探讨如何有效地利用这些控件来构建高效且用户友好的界面。 首先,我们要了解`UITableView`的基本结构。`UITableView` 是一个视图对象,负责显示一系列行,每行...

    UITableView使用自定义cell的例子

    本教程将通过一个具体的例子,演示如何在UITableView中使用自定义的UITableViewCell。我们采用的是Model-View-Controller(MVC)架构,这是一种常见的软件设计模式,可以有效分离业务逻辑、数据与用户界面。 首先,...

    uitableview使用

    这个教程将深入讲解`UITableView`的基本方法、代理方法、编辑和移动等功能的使用。 首先,我们来了解`UITableView`的基本结构。一个`UITableView`由多个单元格(UITableViewCell)组成,每个单元格可以包含不同的...

    iPhone UITableView的使用方法实例

    UITableView是iPhone中比较常用的,用的比较多的控件, 本例中说明iPhone UITableView的使用方法实例。 该实列中是手动增加UITableViewDataSource和UITableViewDelegate协议来实现的。

    UITableView的使用

    在本教程中,我们将深入探讨UITableView的使用,包括如何简单地搭建UITableView,搭建分组的UITableView,搭建分段的UITableView以及实现可删除行的功能。 首先,让我们从最基础的开始——搭建一个简单的...

    ios-UITableView的使用.zip

    这个"ios-UITableView的使用.zip"文件很可能是包含一个示例项目,演示了如何在Swift或Objective-C中自定义UITableView的Cell。下面将详细解释UITableView的核心概念以及自定义TableViewCell的步骤。 首先,...

    UITableView

    为了高效利用内存,UITableView使用Cell的重用机制。当你需要显示新Cell时,它会从一个池中获取已准备好的Cell,而不是每次都新建。你需要通过`dequeueReusableCell(withIdentifier:for:)`方法获取Cell,并在其中...

    iPhone之UITableView入门

    本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其工作原理和基本操作。 首先,UITableView的主要组成部分包括:表头(HeaderInSection)、表尾(FooterSection)...

    UITableView的带有图片

    - UITableView使用Cell复用来提高性能,因此需要在`tableView(_:willDisplay:forRowAt:)`或`tableView(_:prepareForReuse:)`方法中清除之前加载的图片,以避免图片显示错误。 6. **延迟加载与懒加载**: - 当...

    iOS中UITableView使用的常见问题总结

    以上就是关于iOS中UITableView使用的一些常见问题和解决办法,包括设置headerView、去除分割线、自动计算高度、禁用默认分割线、自定义section和row、处理点击阴影以及iPad的缩进问题。理解并熟练运用这些技巧,可以...

    iphone UITableView详解 带实例 例子

    相比于 UIButton 等简单控件,UITableView 的使用较为复杂,涉及较多的概念与方法。本文将详细介绍 UITableView 的基本用法,并提供具体的实现示例。 #### 二、UITableView 的基础 在开始之前,我们需要了解 ...

    swift UITableView 闭包 block

    如果这是一个第三方库,它可能提供了简化UITableView使用的API,包括更方便地使用闭包进行交互。具体使用方法需要参考该库的文档和示例代码。 综上所述,Swift中的UITableView与闭包的结合使用能帮助我们创建高度...

    UITableView23.zip

    这个名为"UITableView23.zip"的压缩包很可能包含了关于UITableView使用的详细教程或者代码示例。博客链接指向了CSDN上的一个文章,作者dreams_deng分享了对UITableView的深入理解和实践总结。 UITableView的使用...

    一个简单的UITableView使用

    该源码是一个简单的UITableView使用,源码TableVIew-01,如题一个简单的UITableView的使用,功能不是太复杂,简单的运用UITableView控件将数据展示出来。 环境:xcode 6.1 语言:OC

    UITableView Class Reference

    为了优化性能,UITableView 使用复用机制,即 `dequeueReusableCellWithIdentifier:` 方法。这个机制减少了创建新单元格的开销,因为当一个单元格滑出屏幕时,会被回收并重新用于即将进入可视区域的单元格。 在实际...

    UITableView Controller

    在iOS应用开发中,我们经常使用 UITableView 来展示大量有序的数据,比如联系人列表、邮件收件箱或者新闻文章列表。 在 "UITableView Controller 简单示例" 中,我们可以探讨以下几个关键知识点: 1. **初始化与...

    ios-UITableView 多选.zip

    - 为了优化性能,UITableView使用了Cell的复用机制。当Cell滚动出屏幕后,会被回收并重新使用。 - 我们需要在`cellForRowAt`代理方法中根据数据模型设置Cell的状态,比如是否选中。 4. 状态保存与恢复: - 为了...

    UISCrollView与UITableView嵌套使用

    ### UISCrollView与UITableView嵌套使用 #### 知识点概述 在iOS应用开发过程中,经常需要将`UIScrollView`与`UITableView`进行嵌套使用,以实现更加丰富的界面交互和展示效果。例如,在一个水平滑动的界面中,每个...

    利用UITableView实现左右两栏滚动的关联的Demo

    在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。...这个Demo不仅展示了基本的UITableView使用,还涵盖了数据绑定、用户交互和界面同步等高级特性,对于iOS开发者来说具有很高的学习价值。

    UITableView、UITableView基本用法、UITableView详解

    iOS 开发中 UITableView 的使用详解 UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的...

Global site tag (gtag.js) - Google Analytics