首页 > 代码库 > iOS表格制作

iOS表格制作

由于项目上的需求,需要做一个表格出来,来显示流程状态。刚开始脑子一头雾水,没有一点思路,但是靠着自己的座右铭--“世上无难事,只怕有心人”,克服了所有困难。好,不说了,讲正事。

制作表格,还是需要tableView来做。

1. 创建一个UIView对象 ;

    UIView *tableViewHeadView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, kCount*kWidth, kHeight)];

    self.myHeadView=tableViewHeadView; //(myHeadView 是 UIView)

 

 2.创建N个字段的View的对象,放到 上面创建的tableViewHeadView上;

    for(int i=0;i<kCount;i++){

        

        UIView *headView=[[UIView alloc]initWithFrame:CGRectMake(i*kWidth, 0, kWidth, kHeight)];

        headView.backgroundColor=[UIColorcolorWithRed:arc4random_uniform(255)/255.0green:arc4random_uniform(255)/255.0blue:arc4random_uniform(255)/255.0alpha:1];

        [tableViewHeadView addSubview:headView];

    }

3.然后创建一个UITableView对象 ;

    UITableView *tableView=[[UITableViewalloc]initWithFrame:CGRectMake(0, 0, self.myHeadView.frame.size.width, 460) style:UITableViewStylePlain];

    tableView.delegate=self;

    tableView.dataSource=self;

    tableView.bounces=YES;

    tableView.separatorStyle=UITableViewCellSeparatorStyleNone;

    self.myTableView=tableView;

    tableView.backgroundColor=[UIColorwhiteColor];

 4.创建一个UIScrollView对象,放置上面的tableView对象,并且将其位置右移部分像素;

    UIScrollView *myScrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(kWidth*0.7, 0, self.view.frame.size.width-kWidth*0.7, 480)];

    [myScrollView addSubview:tableView];

    myScrollView.contentSize=CGSizeMake(self.myHeadView.frame.size.width,0);

    myScrollView.bounces=YES;

    [self.view addSubview:myScrollView];

 

 5.创建表最左边的的字段的列;//有人会问,为什么不在上面的tableview里面一起表现出来呢。这里,我想告诉你的是,为了实现,表格第一列不动,其他列可以滑动的效果,所以这样做了。这样做 还有最重要一步,就是要实现滚动非第一列的时候,保证整个tableView和 第一列同时滑动,这就是我第6步要实现的了;

    self.timeView=[[TimeView alloc]initWithFrame:CGRectMake(0, 100, kWidth*0.7, kCount*(kHeight+kHeightMargin))]; //在TimeView 类里面,创建了一个tableView

    [self.view addSubview:self.timeView];

 

6. 实现UIScrollView的delegate

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    CGFloat offsetY= self.myTableView.contentOffset.y;

    CGPoint timeOffsetY=self.timeView.timeTableView.contentOffset;

    timeOffsetY.y=offsetY;

    self.timeView.timeTableView.contentOffset=timeOffsetY;

    if(offsetY==0){

        self.timeView.timeTableView.contentOffset=CGPointZero;

    }

}

 

7.接下来就是实现tableView的delegate 和 dataSource。

在这里要说明一下,Mycell这个类的初始化方法里面,又创建了N个view

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

        

        for(int i=0;i<20;i++){

            UIView *headView=[[UIViewalloc]initWithFrame:CGRectMake(i*kWidth, 0, kWidth-kWidthMargin, kHeight+kHeightMargin)];

            headView.backgroundColor=[UIColor whiteColor];

            [self.contentView addSubview:headView];

        }

        

    }

    returnself;

}

 

 

 

 

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

{

    return kCount-1;

}

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

{

    static NSString *cellIdentifier=@"cell";

    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(cell==nil){

        

        cell=[[MyCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellIdentifier];

        cell.backgroundColor=[UIColorgrayColor];

//        cell.selectionStyle=UITableViewCellSelectionStyleNone;

[cell setSelectionStyle:UITableViewCellSelectionStyleDefault];

    

    }

    return cell;

}

8.最后异步需要将前面第1步,创建的那个headerView,放置到表头,并设置表头高度;

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{

    

    returnself.myHeadView;

}

 

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

{

    

    returnkHeight;

}

 

这里只是写了个极具简单的表格,没有将数据填充进去,后续会加进去的。。。