UITableView详解

UITableView详解

//创建 UITableView(所在类中要遵从UITableView的 UITableViewDataSource和 UITableViewDelegate 协议)

UITableView  *dataTable = [[UITableView alloc] initWithFrame:CGRectMake(0,0,320, 420)];

dataTable.delegate =self;

dataTable.dataSource =self;

[self.view addSubview:dataTable];

[dataTable release];


// UITableView各Method说明

// Section总数

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{

  return TitleData;

}


// Section 显示的标题

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

  return @"sectionA";

}


// 指定有多少个分区(Section),默认为1

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

  return 4;

}


// 指定每个分区中有多少行,默认为1

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

  return 1;

}


// 绘制Cell

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

  static NSString * SimpleTableIdentifier =@"SimpleTableIdentifier";

   UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:SimpleTableIdentifier];

  if (cell ==nil){

        cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefault

                                      reuseIdentifier: SimpleTableIdentifier] autorelease];

  }

  cell.imageView.image = image;//未选cell时的图片

  cell.imageView.highlightedImage = highlightImage;//选中cell后的图片

  cell.text =//.....

  return cell;

}


// 行缩进

-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{

  NSUInteger row = [indexPath.row];

  return row;

}


// 改变行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

  return 40;

}


// 选中Cell响应事件

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

  [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失

}


// 判断选中的行(阻止选中第一行)

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{

  NSUInteger row = [indexPathrow];

  if (row ==0){

  return nil;

  }

  return indexPath;

}


// 划动cell是否出现del按钮

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{

}


// 编辑状态

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle

forRowAtIndexPath:(NSIndexPath *)indexPath{

}


// 右侧添加一个索引表

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{

}


// 返回Section标题内容

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

}


// 自定义划动时del按钮内容

- (NSString *)tableView:(UITableView *)tableView

titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{

}


// 跳到指的row or section

[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];



// 返回当前所选cell

NSIndexPath *ip = [NSIndexPath indexPathForRow:row inSection:section];

[tableView selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionNone];

// 设置分割线

[tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];


// 定位

[tableView setContentOffset:CGPointMake(0, promiseNum *44 + Chapter *20)];

[tableView setContentSize:CGSizeMake(0, controller.promiseNum *44)];


// 设置分割线

[tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];


// 选中cell时的颜色

typedef enum{

  UITableViewCellSelectionStyleNone,

  UITableViewCellSelectionStyleBlue,

  UITableViewCellSelectionStyleGray

}UITableViewCellSelectionStyle;


// cell右边按钮格式

typedef enum{

  UITableViewCellAccessoryNone,                 // don't show any accessory view

  UITableViewCellAccessoryDisclosureIndicator,  // regular chevron. doesn't track

  UITableViewCellAccessoryDetailDisclosureButton,// blue button w/ chevron. tracks

  UITableViewCellAccessoryCheckmark             // checkmark. doesn't track

}UITableViewCellAccessoryType


// 是否加换行线

typedef enum{

  UITableViewCellSeparatorStyleNone,

  UITableViewCellSeparatorStyleSingleLine

}UITableViewCellSeparatorStyle


// 改变换行线颜色

tableView.separatorColor = [UIColor blueColor];


// 去掉cell的选中背景

[tableViewdeselectRowAtIndexPath:indexPath animated:YES];


// 设置分割线

[tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];


// 在UITableViewCell上建立UILable多行显示

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

  static NSString * CellIdentifier =@"Cell";

  UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];

  if (cell ==nil){

  cell = [[[UITableViewCellalloc] initWithFrame:CGRectZeroreuseIdentifier:CellIdentifier] autorelease];

  UILabel *datalabel = [[UILabelalloc] initWithFrame:CGRectMake(10,0,320,44)];

  [datalabel setTag:100];

  datalabel.autoresizingMask =UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight;

  [cell.contentViewaddSubview:datalabel];

  [datalabel release];

  }

  UILabel *datalabel = (UILabel *)[cell.contentViewviewWithTag:100];

  [datalabel setFont:[UIFontboldSystemFontOfSize:18]];

  datalabel.text = [data.DataArray objectAtIndex:indexPath.row];

  cell.accessoryType =UITableViewCellAccessoryDisclosureIndicator;

  return cell;

}

原文地址:https://www.cnblogs.com/xuhongwei/p/5046543.html