IOS开发之TableView详解

jopen 10年前

//-、建立 UITableView     DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)];     [DataTable setDelegate:self];     [DataTable setDataSource:self];     [self.view addSubview:DataTable];     [DataTable 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 4;    }         //指定每个分区中有多少行,默认为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 40;    }         //定位    [TopicsTable setContentOffset:CGPointMake(0, promiseNum * 44 + Chapter * 20)];         //返回当前所选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 == 0)            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(0,controller.promiseNum * 44)];    //右侧添加一个索引表    - (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];    三、在UITableViewCell上建立UILable多行显示    - (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(10, 0, 320, 44)];      [Datalabel setTag:100];      Datalabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;      [cell.contentView addSubview:Datalabel];      [Datalabel release];     }      UILabel *Datalabel = (UILabel *)[cell.contentView viewWithTag:100];     [Datalabel setFont:[UIFont boldSystemFontOfSize:18]];     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];