你的位置:首页 > 操作系统

[操作系统]UITableView详细注释


style //普通 UITableViewStylePlain,  //分组 UITableViewStyleGrouped//表格视图  UITableView * tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];  //设置数据源  tableView.dataSource = self;  //设置代理  tableView.delegate = self;  //分区头的高度  tableView.sectionHeaderHeight = 30;  //分区尾的高度  tableView.sectionFooterHeight = 30;  //行高,默认行高是44。//  tableView.rowHeight = 100;//  tableView.backgroundColor = [UIColor grayColor];/*         UITableViewCellSeparatorStyleNone 没有线     UITableViewCellSeparatorStyleSingleLine 单行线     UITableViewCellSeparatorStyleSingleLineEtched 被石化的单行线             //线的风格    _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;//    _tableView.separatorColor = [UIColor redColor];    //线的内边距    _tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);//行高固定时使用    _tableView.rowHeight = 60;    //设置背景View//  UIImageView * imageView = [[UIImageView alloc] initWithFrame:tableView.bounds];//  imageView.image = [UIImage imageNamed:@"baby.jpg"];//  tableView.backgroundView = imageView;//索引区域的背景    _tableView.sectionIndexBackgroundColor = [UIColor whiteColor];    //设置索引文字的颜色    _tableView.sectionIndexColor = [UIColor blueColor];    //cell行数小于多少是展示索引    _tableView.sectionIndexMinimumDisplayRowCount = 100;    //选择索引时的背景颜色    _tableView.sectionIndexTrackingBackgroundColor = [UIColor clearColor];//设置编辑模式  [self.tableView setEditing:YES animated:YES];  //得到所有选中的行数  NSArray * deleteList = [self.tableView indexPathsForSelectedRows];代理 UITableViewDataSource,UITableViewDelegate//几个section- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {    return self.peopleList.count;}//Section是分组,Rows多少行,默认情况下只有一个Section.分组的index为0- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    NSArray * p = self.peopleList[section];    return p.count;}//cell单元格,IndexPath索引//UITableViewCell是组成UITableView的单元格- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {     UITableViewCell * cell = [[UITableViewCell alloc] init];    cell.textLabel.text = self.peopleList[indexPath.section][indexPath.row];    //clearColor是透明颜色  cell.backgroundColor = [UIColor clearColor];    return cell;}//返回分区顶部标题- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {    return self.headList[section];}//返回分区尾部标题- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {    return self.footList[section];}//选中某一行- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {    //取消选中某一行  [tableView deselectRowAtIndexPath:indexPath animated:YES];//转到下一页  NSString * vcName = self.viewControllers[indexPath.section][indexPath.row];    UIViewController * vc = [[NSClassFromString(vcName) alloc] init];  [self.navigationController pushViewController:vc animated:YES];  }//section空隙之间的颜色- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {    UIView * v = [[UIView alloc] init];  v.backgroundColor = [UIColor greenColor];  return v;}//当滚动表格时,这个代理方法,一直调用-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    //UITableViewCell的复用机制    static NSString * identifier = @"cellID";    //从复用池里找对应的cell  UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];    if (!cell) {        /*         UITableViewCellStyleDefault 显示图片,显示辅助图片,显示一行文字     UITableViewCellStyleValue1  显示图片,显示辅助图片,普通文字,描述文字,共占一排     UITableViewCellStyleValue2  不显示图片,显示辅助图片,普通文字,描述文字,共占一排     UITableViewCellStyleSubtitle 显示图片,显示辅助图片,普通文字,描述文字,共占两排         */        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cellID"];  }    Industry * industry = self.dataList[indexPath.row];    cell.textLabel.text = industry.name;    cell.detailTextLabel.text = industry.state;    cell.imageView.image = [UIImage imageNamed:industry.icon];    cell.accessoryType = UITableViewCellAccessoryDetailButton;    return cell;}//设置行高方法,如果实现这个代理方法,rowHeight无效,这个主要用于设置可变cell高度//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {//  //  return 100;//}//显示索引的题目- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {  return [self.dataList valueForKey:@"title"];}//返回表格视图是否可以编辑- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {    return YES;}//返回表格视图是否可以滚动- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {    return YES;}//确定编辑的选项/*  UITableViewCellEditingStyle   UITableViewCellEditingStyleNone 不编辑  UITableViewCellEditingStyleDelete 删除  UITableViewCellEditingStyleInsert 插入 */- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {    //如果是删除操作  if (editingStyle == UITableViewCellEditingStyleDelete) {        //从数据源删除数据    [self.dataList removeObjectAtIndex:indexPath.row];        //根据indexPath数组删除元素        NSArray * deleteIndexs = @[indexPath];        //UITableViewRowAnimation 操作动画    [tableView deleteRowsAtIndexPaths:deleteIndexs withRowAnimation:UITableViewRowAnimationFade];      }}-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {    if (editingStyle == UITableViewCellEditingStyleDelete) {        [self.dataList removeObjectAtIndex:indexPath.row];        //刷新表格//    [tableView reloadData];        //刷新删除操作    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];      } else if (editingStyle == UITableViewCellEditingStyleInsert) {        //插入操作    [self.dataList insertObject:@"baby" atIndex:indexPath.row];        [tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];  }}//移动必须实现的方法//sourceIndexPath 起始位置//destinationIndexPath 目标位置- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {    NSString * name = self.dataList[sourceIndexPath.row];    [self.dataList removeObjectAtIndex:sourceIndexPath.row];  [self.dataList insertObject:name atIndex:destinationIndexPath.row];  }//修改删除按钮- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {    return @"真的要删除吗";}//默认返回UITableViewCellEditingStyleDelete- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {  //  return UITableViewCellEditingStyleInsert;  return UITableViewCellEditingStyleDelete;}- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {    //多选  return UITableViewCellEditingStyleInsert|UITableViewCellEditingStyleDelete;}