IOS開發之TableView詳解

jopen 10年前發布 | 44K 次閱讀 TableView iOS開發 移動開發

//-、建立 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];</pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!