UITableView

UITableView控件在iOS中有着广泛的应用,它会管理具有相同数据结构的数据。它继承于UIScrollView。

每条数据都是显示在UITableViewCell中  TableView的两种样式:Plain:普通列表样式 Grouped: 这是分块风格 每个分区称为一个section,每一行称为row,编号都是从0开始

  初始化

  1. UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height - 64) style:UITableViewStylePlain]; 
  2.     UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height - 64) style:UITableViewStyleGrouped];
他有两个必须执行的协议

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

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

第一个是它有多少个组  执行第一个协议时最好设置一个成员变量 返回值是return[_array count];  

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

   NSLog(@"%s", __func__);

   static NSString *cellIdentify = @"cell";//设置全局变量

    MainTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentify];//去cellIdentify重用池中取cell

   if (!cell) {

        cell = [[[MainTableViewCellalloc]initWithStyle:UITableViewCellStyleValue1reuseIdentifier:cellIdentify]autorelease];//创建一个cell放到重用池cellIdentify里面,方便下次调用取值

    }

   NSLog(@"section = %d row = %d", indexPath.section, indexPath.row);//indexPath在协议中是一个重要的属性,包含section和row。此句查看UITableView拖动时,执行顺序

   return cell;

注意自动释放,还有设置代理人

//设置表头

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0,0,100, 100)];

    [label setBackgroundColor:[UIColor blackColor]];

    [tableView setTableHeaderView:label]; //需要一个UIView类型的参数宽度和tableView的宽度相同 高度自定义

    //设置分割线颜色

    [tableView setSeparatorColor:[UIColor cyanColor]];

    [self.view addSubview:tableView];

    [tableView release];

}

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

#pragma mark 实现协议的方法

//一个section有多少row

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

{   //一个Section中有多少row

    //数组的元素个数

    if (section == 0) {

    return 3;

    } else {

        return 2;

    }

//    return [_tableArray count];

}

//该方法能为row添加cell(内容)

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

{

    //设置重用池key

    static NSString *cellIdentify = @"cellIdentify";

    //取cell

    //CustomTableViewCell 自定义类 里面的控件放在 self.contentView上

    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentify];

    //判断cell是否存在

    if (!cell) {

    //如果不存在 创建UITableViewCell 对象 并且放到重用池里

        cell = [[[CustomTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentify]autorelease]; //最后一个参数是重用池的key

    }

    

    //参数 indexPath 有两个属性 一个是section 只的哪个区域 一个是row

    NSString *str =[_tableArray objectAtIndex:indexPath.row];

    //cell的内容

//    [cell.textLabel setText:str];

//    [cell.imageView setImage:[UIImage imageNamed:@"1.jpg"]];

//    [cell.detailTextLabel setText:@"hello"];

    [cell.label1 setText:str];

    return cell ;

}

//设置有多少个section

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return 3;

}

//设置section头标题的名称

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

{

    if (section == 0) {

        return @"A";

    } else{

        return @"B";

    }

}

//设置section脚标题的名称

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section

{

    return @"下一页";

}

//设置行高

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

    

    return 50;

}

//设置section头标题的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

    return 30;

}

//设置section脚标题的高度

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

{

    return 30;

}

//右侧添加一个索引表

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

{

    NSMutableArray *arr = [NSMutableArray array];

    for (int i = 65; i <= 90; i++) {

        [arr addObject:[NSString stringWithFormat:@"%c", i]];

    }

    return arr;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值