iOS UITableView基本属性 函数 用法

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

UITableView
//滚动到当前行
    
    [self tableViewScrollCurrentIndexPath];

1..h文件里添加协议
@interface HwjViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
2.声明变量
@interface HwjViewController ()
{
    //声明UITableView视图
    UITableView *_tableView;
    //数据源数组
    NSMutableArray *_dataArray;
}
3.tableView基本设置
- (void)creatTableView{
    //创建数据源数组   来提供数据
    _dataArray = [[NSMutableArray alloc]init];
    //给数据源数组添加数据
    for (int i = 0; i<5; i++) {
        NSString *name = [NSString stringWithFormat:@"第%d行",i];
        [_dataArray addObject:name];
    }
    //创建tableView视图
    _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
    //设置代理
    _tableView.delegate = self;
    //设置数据源  提供数据的对象
    _tableView.dataSource = self;
    //对tableView进行设置
    //设置分割线颜色
    _tableView.separatorColor = [UIColor redColor];
    //设置分割线类型
    //UITableViewCellSeparatorStyleNone没有分割线
    //UITableViewCellSeparatorStyleSingleLine 单线
    //UITableViewCellSeparatorStyleSingleLineEtched 没有线
    _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    //设置头视图   只有高度有效
    UIImageView *HeaderView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 200, 200)];
    //头视图高度有影响
    HeaderView.image = [UIImage imageNamed:@"huancun.jpg"];
     //设置头视图
    _tableView.tableHeaderView = HeaderView;
    //设置尾视图
    UIImageView *FooterView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 100)];
    FooterView.image = [UIImage imageNamed:@"huancun.jpg"];
    //设置尾视图
    _tableView.tableFooterView = FooterView;
    [self.view addSubview:_tableView];
}
4.代理基本设置
#pragma mark - 创建cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    //cell复用标志
    static NSString *cellID = @"cellId";
    //从复用队列获取是否有cellID标志对应的可复用的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        //创建cell
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID] autorelease];
        //cell上有一个contentView ,cell 上的内容都粘到了contentView上 所有我们要想在cell 上粘贴自己的内容必须要在contentView 上粘贴
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(290, cell.contentView.bounds.size.height/2, 15, 15)];
        label.tag = 1001;//设置tag 值
        [cell.contentView addSubview:label];
        [label release];
        //把一个label 粘贴到contentView上
        
    }
    NSLog(@"contentView:%@",cell.contentView);
    UILabel *label = (UILabel *)[cell.contentView viewWithTag:1001];
    label.text = [NSString stringWithFormat:@"%d",indexPath.row];//显示哪一行
    
    
    //indexPath:保存的是第几分区的第几行
    //分区:indexPath.section  行:indexPath.row
    //对cell 内容进行修改
    cell.textLabel.text = [NSString stringWithFormat:@"第%c分区",indexPath.section+'A'];
    
    //获取数据源的数据
    //1.先得到分区数据 一个一维数组
//    NSMutableArray *arr = _dataArray[indexPath.section];
//    cell.detailTextLabel.text = [arr objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = _dataArray[indexPath.section][indexPath.row];
    //设置cell的左侧图片
    cell.imageView.image = [UIImage imageNamed:@"11.jpeg"];
    /*
     //没有选中效果
     UITableViewCellSelectionStyleNone,
     
     
     //下面几个都是灰色风格的
     UITableViewCellSelectionStyleBlue,
     UITableViewCellSelectionStyleGray,
     UITableViewCellSelectionStyleDefault
     */
    //选中之后都是灰的
    //设置cell 的选中风格
    cell.selectionStyle = UITableViewCellSelectionStyleDefault;
    
    //设置选中背景视图
    UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 320, 44)];
    //坐标大小没有影响
    redView.backgroundColor = [UIColor redColor];
    cell.selectedBackgroundView = redView;
    [redView release];
    //设置背景颜色
    cell.backgroundColor = [UIColor grayColor];
    //设置背景图片
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    //table_cell_bg比较小  我们可以自己实现拉伸
    imageView.image = [[UIImage imageNamed:@"table_cell_bg"] stretchableImageWithLeftCapWidth:5 topCapHeight:5];
    //stretchableImageWithLeftCapWidth拉伸图片
    //距离左侧5像素 不拉伸 从第6像素开始拉伸
    //距离顶部5像素 不拉伸 从第6像素开始拉伸
    //应用气泡聊天
    
    cell.backgroundView = imageView;
    [imageView release];
    
    return cell;
}

//设置分区的个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    //返回1代表1个分区
    return 1;
}
//设置行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
	//返回1代表1行
    return 1;
}
//设置指定分区的头标标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    NSString *nss = @“头标题";
	return nss;
}
//设置指定分区的脚标标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
    NSString *nss = @"脚标题";
	return nss;
}
//设置cell 的行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    //默认行高44
    return 50;
}
//选中指定行 调用
//已经选中
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   NSLog(@"第%d行选中",indexPath.row);
}
//取消选中的时候调用
//从选中状态到非选中状态
//反选
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"第%d行取消选中/反选",indexPath.row);
}
	1	- (void)viewDidLoad  
	2	{  
	3	    [super viewDidLoad];  
	4	    //初始化数据  
	5	    NSArray *array1_=@[@"张铁林",@"张国立",@"张国荣",@"张艺谋",@"张惠妹"];  
	6	    NSArray *array2_=@[@"李小龙",@"李小路"];  
	7	    NSArray *array3_=@[@"王刚"];  
	8	    self.myDic=@{@"老张家":array1_, @"老李家":array2_, @"老王家":array3_};  
	9	  
	10	      
	11	    UITableView *myTableView_=[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStylePlain];  
	12	    myTableView_.delegate=self;  
	13	    myTableView_.dataSource=self;  
	14	    //改变换行线颜色lyttzx.com  
	15	    myTableView_.separatorColor = [UIColor blueColor];  
	16	    //设定Header的高度,  
	17	    myTableView_.sectionHeaderHeight=50;  
	18	    //设定footer的高度,  
	19	    myTableView_.sectionFooterHeight=100;  
	20	    //设定行高  
	21	    myTableView_.rowHeight=100;  
	22	    //设定cell分行线的样式,默认为UITableViewCellSeparatorStyleSingleLine  
	23	    [myTableView_ setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];  
	24	    //设定cell分行线颜色  
	25	    [myTableView_ setSeparatorColor:[UIColor redColor]];  
	26	    //编辑tableView  
	27	    myTableView_.editing=NO;  
	28	  
	29	    [self.view addSubview:myTableView_];  
	30	      
	31	    //跳到指的row or section  
	32	    [myTableView_ scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:2]  
	33	                     atScrollPosition:UITableViewScrollPositionBottom animated:NO];  
	34	  
	35	}  
	36	  
	37	  
	38	  
	39	//指定有多少个分区(Section),默认为1  
	40	- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {  
	41	    return [[self.myDic allKeys] count];  
	42	}  
	43	  
	44	  
	45	//每个section底部标题高度(实现这个代理方法后前面 sectionHeaderHeight 设定的高度无效)  
	46	-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{  
	47	    return 20;  
	48	}  
	49	  
	50	//每个section头部标题高度(实现这个代理方法后前面 sectionFooterHeight 设定的高度无效)  
	51	-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{  
	52	    return 20;  
	53	}  
	54	  
	55	//每个section头部的标题-Header  
	56	- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{  
	57	    return [[self.myDic allKeys] objectAtIndex:section];  
	58	}  
	59	  
	60	//每个section底部的标题-Footer  
	61	- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{  
	62	    return nil;  
	63	}  
	64	  
	65	//用以定制自定义的section头部视图-Header  
	66	-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{  
	67	    return nil;  
	68	}  
	69	  
	70	//用以定制自定义的section底部视图-Footer  
	71	-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{  
	72	    UIImageView *imageView_=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 20)];  
	73	    imageView_.image=[UIImage imageNamed:@"1000.png"];  
	74	    return [imageView_ autorelease];  
	75	}  
	76	  
	77	  
	78	//指定每个分区中有多少行,默认为1  
	79	- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
	80	    return [[self.myDic objectForKey:[[self.myDic allKeys]objectAtIndex:section]] count];  
	81	}  
	82	  
	83	//改变行的高度(实现主个代理方法后 rowHeight 设定的高度无效)  
	84	- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{  
	85	    return 100;  
	86	}  
	87	  
	88	  
	89	//绘制Cell  
	90	-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
	91	    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";  
	92	      
	93	    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:  
	94	                             SimpleTableIdentifier];  
	95	      
	96	    if (cell == nil) {  
	97	        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  
	98	                                       reuseIdentifier: SimpleTableIdentifier] autorelease];  
	99	     //设定附加视图  
	100	        [cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton];  
	101	//        UITableViewCellAccessoryNone,                   // 没有标示  
	102	//        UITableViewCellAccessoryDisclosureIndicator,    // 下一层标示  
	103	//        UITableViewCellAccessoryDetailDisclosureButton, // 详情button  
	104	//        UITableViewCellAccessoryCheckmark               // 勾选标记  
	105	          
	106	     //设定选中cell时的cell的背影颜色  
	107	        cell.selectionStyle=UITableViewCellSelectionStyleBlue;     //选中时蓝色效果  
	108	//        cell.selectionStyle=UITableViewCellSelectionStyleNone; //选中时没有颜色效果  
	109	//        cell.selectionStyle=UITableViewCellSelectionStyleGray;  //选中时灰色效果  
	110	//          
	111	//        //自定义选中cell时的背景颜色  
	112	//        UIView *selectedView = [[UIView alloc] initWithFrame:cell.contentView.frame];  
	113	//        selectedView.backgroundColor = [UIColor orangeColor];  
	114	//        cell.selectedBackgroundView = selectedView;  
	115	//        [selectedView release];  
	116	  
	117	          
	118	//        cell.selectionStyle=UITableViewCellAccessoryNone; //行不能被选中  
	119	  
	120	    }  
	121	      
	122	    //这是设置没选中之前的背景颜色  
	123	    cell.contentView.backgroundColor = [UIColor clearColor];  
	124	    cell.imageView.image=[UIImage imageNamed:@"1001.jpg"];//未选cell时的图片  
	125	    cell.imageView.highlightedImage=[UIImage imageNamed:@"1002.jpg"];//选中cell后的图片  
	126	    cell.textLabel.text=[[self.myDic objectForKey:[[self.myDic allKeys]objectAtIndex:indexPath.section]]objectAtIndex:indexPath.row];  
	127	    return cell;  
	128	}  
	129	  
	130	  
	131	//行缩进  
	132	-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{  
	133	    NSUInteger row = [indexPath row];  
	134	    return row;  
	135	}  
	136	  
	137	//选中Cell响应事件  
	138	- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
	139	    [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失  
	140	      
	141	    //得到当前选中的cell  
	142	    UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];  
	143	    NSLog(@"cell=%@",cell);  
	144	}  
	145	  
	146	//行将显示的时候调用,预加载行  
	147	-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath  
	148	{  
	149	    NSLog(@"将要显示的行是\n cell=%@  \n indexpath=%@",cell,indexPath);  
	150	}  
	151	  
	152	//选中之前执行,判断选中的行(阻止选中第一行)  
	153	-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath  
	154	{  
	155	    NSUInteger row = [indexPath row];  
	156	    if (row == 0)  
	157	        return nil;  
	158	    return indexPath;  
	159	}  
	160	  
	161	  
	162	  
	163	//编辑状态,点击删除时调用  
	164	- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  
	165	forRowAtIndexPath:(NSIndexPath *)indexPath  
	166	{  
	167	      
	168	}  
	169	  
	170	//cell右边按钮格式为UITableViewCellAccessoryDetailDisclosureButton时,点击按扭时调用的方法  
	171	-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{  
	172	    NSLog(@"当前点击的详情button \n indexpath=%@",indexPath);  
	173	}  
	174	  
	175	//右侧添加一个索引表  
	176	- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{  
	177	    return [self.myDic allKeys];  
	178	}  
	179	  
	180	//划动cell是否出现del按钮  
	181	- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {  
	182	    return YES;  
	183	}  
	184	  
	185	//设定横向滑动时是否出现删除按扭,(阻止第一行出现)  
	186	-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath  
	187	{  
	188	    if (indexPath.row==0) {  
	189	        return UITableViewCellEditingStyleNone;  
	190	    }  
	191	    else{  
	192	        return UITableViewCellEditingStyleDelete;  
	193	    }  
	194	    return UITableViewCellEditingStyleDelete;  
	195	}  
	196	  
	197	//自定义划动时delete按钮内容  
	198	- (NSString *)tableView:(UITableView *)tableView  
	199	titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{  
	200	    return @"删除这行";  
	201	、、删除cell 时的动画效果
	202	 [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
	203	          
	204	}  
	205	  
	206	//开始移动row时执行  
	207	-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath  
	208	{  
	209	    NSLog(@"sourceIndexPath=%@",sourceIndexPath);  
	210	    NSLog(@"sourceIndexPath=%@",destinationIndexPath);  
	211	}  
	212	  
	213	//滑动可以编辑时执行  
	214	-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath  
	215	{  
	216	    NSLog(@"willBeginEditingRowAtIndexPath");  
	217	}  
	218	  
	219	//将取消选中时执行, 也就是上次先中的行  
	220	-(NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath  
	221	{  
	222	    NSLog(@"上次选中的行是  \n indexpath=%@",indexPath);  
	223	    return indexPath;  
	224	}  
	225	  
	226	  
	227	//让行可以移动  
	228	-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath  
	229	{  
	230	    return NO;  
	231	}  
	232	  
	233	//移动row时执行  
	234	-(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath  
	235	{  
	236	    NSLog(@"targetIndexPathForMoveFromRowAtIndexPath");  
	237	    //用于限制只在当前section下面才可以移动  
	238	    if(sourceIndexPath.section != proposedDestinationIndexPath.section){  
	239	        return sourceIndexPath;  
	240	    }  
	241	    return proposedDestinationIndexPath;  
	242	}  
	243	//设置索引栏字体颜色
 _tableView.sectionIndexColor = [UIColor redColor];