我们经常用到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;
}