用户登录
用户注册

分享至

iOS UITableView基本属性 函数 用法

  • 作者: 清馨10456190
  • 来源: 51数据库
  • 2022-08-17
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];
软件
前端设计
程序设计
Java相关