IOS中Cell自定义

我们经常用到Cell,在这个地方我们利用cell是来盛放一个对象,在前面我们也介绍了从plist文件中获取到对象,并且存储到一个数组中,在这个程序中主要来说从Cell中获取到对象之后,我们要将数据对象放到cell上怎样来做到。

第一步:我们可以创建一个.xib的文件,然后通过在上面添加一些控件来实现对一个cell的布局

第二步:将素材文件添加到项目中

第三步:在mainStoryBoard中添加一个TableView,然后我们要做的是在ViewController.m文件中实现一个协议,对于这个协议我们要实现两个方法:

@interface ViewController ()<UITableViewDataSource>方法的实现我们可以放在最后,在写好协议之后,我们要回mainStoryBoard中,选中TableView然后点击右键,然后在DataSource中添加ViewController。

第四步:创建一个类,用来盛放素材中的对象,在类的m文件中要有类方法,和对象的构造方法,以及属性,然后实现两个定义的方法。

第五步:在ViewController.m 文件中需要解析plist文件,要就是需要定义一个数组,这个数组的类型是我们刚才定义的类,然后重写这个数组的get方法,怎样重写get方法,首先判断数组是不是为空的,然后从文件中获取到对象并且最后存放到数组中。

第六步:实现协议的方法:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.tgs.count;//这个地方是调用我们刚才的get方法也就会解析到我们的文件
}

第七步:根据cell的布局,我们去自定义cell,创建一个.xib文件并且在这个cell上面放上我们想要的控件

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID=@"tgCell";
    TgTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell==nil) {
        cell=(TgTableViewCell *)[[[NSBundle mainBundle] loadNibNamed:@"TgCell" owner:self options:nil]lastObject];
                                 
    }
    cell.tg=[self.tgs objectAtIndex:indexPath.row];
    return cell;
}

第八步:因为我们要改变的是cell上面的数据,所以说我们要做的给这个cell创建一个类,并且让这个cell和这个类之间进行关联,这一步很重要,因为我们要从将cell上面的控件拖出引用,如果cell和类之间不产生关联就没有办法从cell上面拖拽控件,并且跌倒控件的引用。还要注意的 是我们创建的类,是继承我们一开始创建的那个cell所默认的类的。

第九步:也就是我们创建好类之后我们要做的是修改该cell的class,也就让cell和这个新建的类之间产生的关联。

第十步:我们为了对该cell控件进行识别,我们需要做的是给reuse Idenrtifier赋值

第十一步:拖拽控件,要知道这个地方我们是将控件拖到相关联的类的m文件中,我们在m文件中相应的要有一个类的扩展,所以所谓的类的扩展也就是添加:

@interface 类名()

@end

我们拖拽控件就是将控件拖到两个@之间

第十二步:我们要完善我们的协议的第二个方法,

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID=@"tgCell";//刚才我们的cell的reuse indifer的值就是这个值
    TgTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell==nil) {
        cell=(TgTableViewCell *)[[[NSBundle mainBundle] loadNibNamed:@"TgCell" owner:self options:nil]lastObject];
                                 
    }
    cell.tg=[self.tgs objectAtIndex:indexPath.row];

//tg这个变量是我们自定义的类型,我们在之前并没有定义这个变量,这个变量我们应该给他进行赋值,并且每一个值都是和我们的plIst文件的一个对象的属性一样。

    return cell;
}

第十三步:

给Tg进行赋值:

-(void)setTg:(Tg *)tg
{
    _tg=tg;
    self.iconImageView.image=[UIImage imageNamed:tg.icon];
    self.lblName.text=tg.title;
    self.lblPrice.text=[NSString stringWithFormat:@"¥%@",tg.price];
    self.lblBuyCount.text=[NSString stringWithFormat:@"%@人购买",tg.buyCount];
}

第十四步:

修正cell的大小,高度,在这一步中我们要做到是实现一个协议:

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>是第二个协议,也就是UITableViewDelegate中里面有一个方法,是设置cell的高度的方法,也就是我们显示的时候,因为如果我们不设置最后,我们出来的其默认的是

是44,所以我们可以设置的和我们设置cell和我们的一开始在布局的时候设置cell的高度是一样的。

-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 94;
}

最后我们可以隐藏状态栏:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值