TableView自定义一种cell,展示同一个数据实体的数据:
一、 ViewController中或TableViewController中基本设置:
(TableViewController中以下self.tableview改成self即可。)
1.遵循协议(数据源协议、代理协议)
<UITableViewDataSource,UITableViewDelegate>
2.指定委托(viewdidload中指定委托,基本这样写。。)
self.tableView.dataSource = self;
self.tableView.delegate = self;
获取数据、绑定cell
//获取要展示的数据
self.marr = [self.manager requestData];
//绑定cell
[self.tableView registerClass:[PersonCell class] forCellReuseIdentifier:NSStringFromClass([Person class])];
3.实现方法(数据源方法,委托方法)
//获取一共有几个分区
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
//获取要展示的行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.marr.count;
}
//获取每行要展示的数据
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Person * per = self.marr[indexPath.row];
PersonCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([Person class]) forIndexPath:indexPath];
[cell setCells:per];
return cell;
}
//改变每行的高度方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}
二、数据实体设置
//设置需要展示的几个属性,可以赋值取值即可。
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy)NSString * name;
@property (nonatomic,copy)NSString * tel;
@property (nonatomic,copy)NSString * head;
@end
三、Cell的设置
1、.h中设置获取数据的方法
#import <UIKit/UIKit.h>
#import "Person.h"
@interface PersonCell : UITableViewCell
-(void)setCells:(Person *)person;
@end
2、.m中初始化要用的组件,实现获取数据的方法
#import "PersonCell.h"
@interface PersonCell ()
//设置要展示的组件
@property (nonatomic,strong)UILabel * nameLabel;
@property (nonatomic,strong)UILabel * telLabel;
@property (nonatomic,strong)UIImageView * headImageView;
@end
@implementation PersonCell
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
//要在此处初始化组件,可以使用自动布局(autolayout)。
self.nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(49, 2, 150, 20)];
self.nameLabel.backgroundColor = [UIColor groupTableViewBackgroundColor];
self.nameLabel.font = [UIFont systemFontOfSize:18];
self.telLabel = [[UILabel alloc]initWithFrame:CGRectMake(49, 24, 150, 20)];
self.telLabel.backgroundColor = [UIColor groupTableViewBackgroundColor];
self.telLabel.font = [UIFont systemFontOfSize:12];
self.headImageView = [[UIImageView alloc]initWithFrame:CGRectMake(2, 2, 40, 40)];
self.headImageView.layer.cornerRadius = 10;
self.headImageView.layer.masksToBounds = YES;
[self.contentView addSubview:self.nameLabel];
[self.contentView addSubview:self.telLabel];
[self.contentView addSubview:self.headImageView];
}
return self;
}
-(void)setCells:(Person *)person
{
//此处给组件赋值。
self.nameLabel.text = person.name;
self.telLabel.text = person.tel;
self.headImageView.image = [UIImage imageNamed:person.head];
}
网友评论