表视图1 (UITabelView)

初始化

这里的UITableViewStyle有两种格式 一种是UITableViewStylePlain
还有一种是分组格式
UITableViewStyleGrouped

UITableView *tableView = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStylePlain)];

设置代理 和 数据源

在设置代理之前 我们要先签两个协议

tableView.delegate = self;
tableView.dataSource = self;

设置整个tableView的表头和表尾

只有高度Height可以改变

UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, 50)];
    headerView.backgroundColor = [UIColor cyanColor];
    tableView.tableHeaderView = headerView;
    [headerView release];

x轴与高度height都可以改变表尾在整个视图中的位置

UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(100, 40, 40, 90)];
    footerView.backgroundColor = [UIColor orangeColor];
    tableView.tableFooterView = footerView;
    [footerView release];

dataSource 必须要实现的两个方法

返回分区数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 3;
}

返回每个分区有多少行

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 5;
}

在表视图中 还有一个必要的方法 就是返回单元格方法

在给单元格cell赋值时 要考虑到给你的是什么数据类型,你再慢慢抽丝剥茧 就像剥洋葱一样 最后赋值到cell上

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:identifier] autorelease];

    }
    //赋值的位置
    NSArray *keys = self.dataDic.allKeys;
    NSString *key = keys[indexPath.section];
    NSArray *values = self.dataDic[key];
    //用model来接收数组中的model
    CellModel *model = values[indexPath.row];


    //赋值cell
    cell.textLabel.text = model.title;
    cell.imageView.image = [UIImage imageNamed:model.imageName];

    return cell;

}
 //设置单元格cell的标题
    cell.textLabel.text = @"哈哈";
    cell.detailTextLabel.text = @"呵呵";
    //设置cell上的图片
    cell.imageView.image = [UIImage imageNamed:@"00.jpg"];
    //设置辅助按钮
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

设置每个分区的表头 和 表尾

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView * headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
    headerView.backgroundColor = [UIColor redColor];


    return [headerView autorelease];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 150)];
    footerView.backgroundColor = [UIColor greenColor];

    return [footerView autorelease];
}

设置分区表头 和 表尾 的高度

在这里 一般设置分区表头 和 表尾 的高度 都要和 设置每个分区的表头 和 表尾 一起书写

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 50;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 50;
}

返回的是每一分区的每一行 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 80;
}

设置分区表头 的 标题

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    //NSLog(@"%ld",section);
    //return @"w";
    if (section == 0) {
        return @"a";
    }else if(section == 1)
    {
        return @"b";
    }else
    {
        return @"c";
    }
}

这里写图片描述
左边是分区表头 的 标题 右边是标题小按钮
对号是设置辅助按钮
cell.accessoryType = UITableViewCellAccessoryCheckmark;

设置tabelView右边 标题小按钮

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return @[@"a",@"b",@"c"];
}

这里加一个完整的代码
这是一个RootViewController.m的代码
这里面少了一张图片

//
//  RootViewController.m
//  09-UITableView-02
//
//  Created by lanou on 15/11/20.
//  Copyright (c) 2015年 yht. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>
//保存数据的数组
@property (nonatomic ,retain)NSArray *dataArray;

//保存数据的字典
@property (nonatomic ,retain)NSDictionary *dataDic;
//保存完成排序的所有key
@property (nonatomic ,retain)NSArray *sortKeysArray;
@end

@implementation RootViewController

-(void)dealloc
{
    [_dataArray release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self addTableView];
    [self setUpData];

}

 加载数据的方法
//- (void)setUpDate
//{
//    
//    self.dataArray = @[@"我欲封天",@"大主宰",@"灵域",@"武炼巅峰",@"詹姆斯",@"科比",@"哈登",@"韦德",@"保罗"];
//}
//  处理数据
- (void)setUpData
{
    NSArray *groupD = [NSArray arrayWithObjects:
                       @"徐阳",
                       @"赵姐", nil];
    NSArray *groupC = [NSArray arrayWithObjects:
                       @"张文",
                       @"装装用", nil];
    NSArray *groupM = [NSArray arrayWithObjects:
                       @"张杰",
                       @"尼鹏",
                       @"汪峰", nil];
    NSArray *groupN = [NSArray arrayWithObjects:
                       @"张丰田",
                       @"羽凡",
                       @"马泽共",
                       @"吴玉成",
                       @"宋玉峰", nil];
    NSArray *groupE = [NSArray arrayWithObjects:
                       @"消费",
                       @"相遇",
                       @"明洋",
                       @"刚哥",
                       @"大君",
                       @"子龙",nil];
    NSArray *groupK= [NSArray arrayWithObjects:
                      @"听听",
                      @"荣飞",nil];
    NSArray *groupA = [NSArray arrayWithObjects:
                       @"精超",nil];
    NSArray *groupZ = [NSArray arrayWithObjects:
                       @"弃用",
                       @"之言",
                       @"兵器",
                       @"鹏举",
                       @"江龙",
                       @"游街", nil];

    self.dataDic = @{@"A":groupA, @"Z":groupZ, @"C":groupC, @"D":groupD, @"K":groupK, @"E":groupE, @"M":groupM, @"N":groupN};

    //  取出所有Key
    NSArray *keys = [self.dataDic allKeys];
    //  对key进行排序
    self.sortKeysArray = [keys sortedArrayUsingSelector:@selector(compare:)];
}



//初始化UITableView
- (void)addTableView
{
    UITableView *tableView = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStylePlain)];

    tableView.delegate = self;
    tableView.dataSource = self;
    [self.view addSubview:tableView];
    [tableView release];

}

//返回每个分区多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //数组的元素的个数
    //return self.dataArray.count;
    //return self.dataDic[self.sortKeysArray[section]].count;

    //通过这个字典  先找到分区对应的key
    //用这个key取出对应的数组
    //返回 这个数组的count
    NSString *key = self.sortKeysArray[section];
    NSArray *values = self.dataDic[key];
    return values.count;


}

//返回分区数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    //有多少键值对  就要多少分区
    return self.sortKeysArray.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    /*
     UITableViewCell重用
     需要一个重用的集合  作用:把滑出屏幕的cell(完全消失在屏幕上时)  放入这个重用集合(备用)
     当屏幕下方需要新的cell进行展示的时候 开始重用
     方式是  首先 系统会先去重用集合中找   看有没有cell可以重新使用  如果有 就直接使用  如果没有 
     就创建一个出来进行使用
     */

    static NSString *identifier = @"MyCell";
    //去重用集合中 按标识符  寻找对应的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        //去创建新的cell
        //释放cell的时候  只有创建出来才需要去释放  从集合中取出来  不要释放了
        cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:identifier] autorelease];
        static int num = 0;
        num++;
         NSLog(@"%d",num);
    }
    //赋值cell上的控件(从集合中取出来的   也需要赋值)

    //就一个分区 分区indexPath.section  始终是0
    //row 是每一个分区的第几行
    //cell.textLabel.text = self.dataArray[indexPath.row];

    //字典的展示数据
    //用分区 找出对应的key
    //用key 找出对应的 数组value
    //用行 找出 每一行要显示的字
    NSString *key = self.sortKeysArray[indexPath.section];
    NSArray *values = self.dataDic[key];
    NSString *name = values[indexPath.row];
    cell.textLabel.text = name;


    return cell ;





//    NSString *identifier = @"MyCell";
//    UITableViewCell *tableViewCell = [[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:identifier];
//    //tableViewCell.imageView.image = [UIImage imageNamed:@"01.jpg"];
//    tableViewCell.textLabel.text = @"一个字";
//    tableViewCell.detailTextLabel.text = @"haha";
//    
//    return [tableViewCell autorelease];

}

//设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 80;
}
//设置分区的标题
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return self.sortKeysArray[section];
}
//设置小按钮
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return self.sortKeysArray;
}





- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值