IOS 中列表的TableView 详解,常用方法整理

时间:2023-03-08 16:31:34
IOS 中列表的TableView 详解,常用方法整理

一、创建一个列表,不管代码还是nib拖拉,在nib创建的时候,记得加他的二个代理 (UITableViewDelegate UITableViewDataSource)

代码创建的话,需要关联他的代理,nib创建则不需要关联,他自动会关联。。。代码创建关联的方法为

 LXDataTable = [[UITableView alloc] initWithFrame:CGRectMake(, , , )];

 [LXDataTable setDelegate:self];

 [LXDataTable setDataSource:self];

 [self.view addSubview:DataTable];

 [LXDataTable release];

二、UITableview的每一个代理的Method 使用和 讲解

 //Section总数

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

  return TitleData;

 }

 // Section Titles

 //每个section显示的标题

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

  return @"";

 }

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

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

  return ;

 }

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

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

 }

 //绘制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.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 ;

 }

 //定位

 [TopicsTable setContentOffset:CGPointMake(, promiseNum *  + Chapter * )];

 //返回当前所选cell

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

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

 [tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];

 //选中Cell响应事件

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

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

 }

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

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

 {

     NSUInteger row = [indexPath row];

     if (row == )

         return nil;

     return indexPath;

 }

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

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

 }

 //编辑状态

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

 forRowAtIndexPath:(NSIndexPath *)indexPath

 {

 }

 [topicsTable setContentSize:CGSizeMake(,controller.promiseNum * )];

 //右侧添加一个索引表

 - (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: inSection:] atScrollPosition:UITableViewScrollPositionBottom animated:NO];

三、在UITableViewCell上建立多个 UILable ,来代替cell的加载显示

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

     static NSString *CellIdentifier = @"Cell";   

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

     if (cell == nil) {

         cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

   UILabel *Datalabel = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];

   [Datalabel setTag:];

   Datalabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

   [cell.contentView addSubview:Datalabel];

   [Datalabel release];

  } 

  UILabel *Datalabel = (UILabel *)[cell.contentView viewWithTag:];

  [Datalabel setFont:[UIFont boldSystemFontOfSize:]];

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

  cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

     return cell;

 }

 //选中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];