【ios开发学习 - 第五课】UITableView使用

在开发iphone的应用时基本上都要用到UITableView,这里讲解一下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:2inSection: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.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
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;

}

时间: 2024-10-12 19:51:55

【ios开发学习 - 第五课】UITableView使用的相关文章

【ios开发学习 - 第四课】UIButton使用

一.创建 两种方法: 1. 常规的 initWithFrame 源码打印? UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 80, 44)]; 对代码创建View(UIControl继承自UIView,所以也是view)不甚了解的请参看: <有关View的几个基础知识点> 2. UIButton 的一个类方法(也可以说是静态方法)buttonWithType 源码打印? UIButton *btn2 = [U

iOS开发学习笔记二:UITableView

一:TableViewController 1:删掉默认的ViewController 拖动一个TableViewController 2:新建一个Cocoa Touch Class,命名为:TableViewController 3:将1邦定至2 4:拖动一个Label,TAG设为1,将CELL的ID设为cell 相关代码: 1 override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 2 3 retu

【ios开发学习 - 第三课】UITextField使用

//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyleNone, UITextBorderStyleLine, UITextBord

从零开始学ios开发(十五):Navigation Controllers and Table Views(中)

这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. 如果没有上一篇的代码,可以从这里下载Nav_1 1)第三个subtableview:Controls on Table Rows这个例子,我们将为每个table view的每一行添加一个按钮,这个按钮将放在accessory icon的位置(之前我们使用过accessoryType,其实这也是一个

ios开发学习资料总汇

ios开发学习资料总汇 下面是收集的一些学习资料. 1.唐巧精心整理了国内40多位iOS开发博主的博客地址列表 2.ios常见加密: 链接: http://pan.baidu.com/s/1eQTGFIE 密码: p8ay 3.

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

11个超棒的iOS开发学习网站

11个超棒的iOS开发学习网站 原文:11 Insanely Great iOS Developers Sites永不止步地向他人学习 我相信,要想从一个"还不错"的人变成一个卓越的人,我们需要不停地向他人学习,同时还得尽早地适应最新的技术和工具.除了苹果官方文档网站之外,我列举了一些能获取有价值的文章和资源的网站,这些网站能够帮助我们更上一个台阶. 让我们先看一些原创内容博客: objc.io 这个网站由世界级的iOS工程师每月进行更新.上面可以看到关于某些话题的高质量文章和深度评论

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo