#import "MyTableViewController.h"
#import "Data.h"
#import "MyCell.h"
@interface MyTableViewController ()
@property(nonatomic,strong)NSArray *allDatas;
@end
@implementation MyTableViewController
-(NSArray *)allDatas {
if (_allDatas ==nil) {
_allDatas = [DatagetData];
}
return_allDatas;
}
- (void)viewDidLoad {
[superviewDidLoad];
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
returnself.allDatas.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//把该行显示的数据对象获取出来
Data *data =self.allDatas[indexPath.row];
//通过自己实现的类方法创建 MyCell实例
MyCell *cell = [MyCellcellForTableView:tableView];
//将当前行对应的数据传入到当前单元格对象中
//用参数给 cell中的 _data赋值
//在set方法中用传入进去的数据对象中的内容给 cell中各个控件进行赋值
// [cell setData:data];
cell.data = data;
[cell setupData:data];
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return60;
}
data.h
@interface Data : NSObject
@property(nonatomic,strong)NSString *leftImageName;
@property(nonatomic,strong)NSString *rightImageName;
@property(nonatomic,strong)NSString *upLabelContent;
@property(nonatomic,strong)NSString *downLabelContent;
+(NSArray*)getData;
.M
@implementation Data
+(NSArray *)getData {
Data *data = [[Dataalloc]init];
data.leftImageName =@"head";
data.rightImageName =@"head";
data.upLabelContent =@"上面的内容1";
data.downLabelContent =@"上面的内容1";
Data *data2 = [[Dataalloc]init];
data2.leftImageName =@"head";
data2.rightImageName =@"head";
data2.upLabelContent =@"上面的内容2";
data2.downLabelContent =@"上面的内容2";
return@[data, data2];
}
@end
.h
@interface MyCell :UITableViewCell
//数据模型
@property(nonatomic,strong)Data *data;
//设置数据的另外一种方法,自己写个方法,而不是利用setter方法
-(void)setupData:(Data*)data;
//实例方法通过实例调用,如果一个实例方法可以创建一个新的本类实例,那么该类最有也要有个实例来调用方法
//通常创建对象的方法,都是类方法,因为类不需要实例调用,只是用类名调用即可
+(MyCell*)cellForTableView:(UITableView*)tableView;
.m@interface MyCell()
@property (weak,nonatomic) IBOutletUIImageView *leftImageView;
@property (weak,nonatomic) IBOutletUIImageView *rightImageView;
@property (weak,nonatomic) IBOutletUILabel *upLabel;
@property (weak,nonatomic) IBOutletUILabel *downLabel;
@end
@implementation MyCell
//重新定义 data属性的setter方法
-(void)setData:(Data *)data {
//用参数给 cell中的 _data赋值
_data = data;
//用传进来的数据给各控件的内容赋值
self.leftImageView.image = [UIImageimageNamed:data.leftImageName];
self.rightImageView.image = [UIImage imageNamed:data.rightImageName];
self.upLabel.text = data.upLabelContent;
self.downLabel.text = data.downLabelContent;
}
-(void)setupData:(Data *)data {
self.leftImageView.image = [UIImageimageNamed:data.leftImageName];
self.rightImageView.image = [UIImage imageNamed:data.rightImageName];
self.upLabel.text = data.upLabelContent;
self.downLabel.text = data.downLabelContent;
}
+(MyCell *)cellForTableView:(UITableView *)tableView {
//cell的重用方式一
MyCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"myCellID"];
if (cell ==nil) {
//[[NSBundle mainBundle]loadNibNamed:@"MyCell" owner:nil options:nil]
//在当前工程文件夹下查找 MyCell.xib文件,并通过该文件创建文件中所有的视图,返回一个数组
cell = [[NSBundlemainBundle]loadNibNamed:@"MyCell"owner:niloptions:nil].lastObject;
}
return cell;
}
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[supersetSelected:selected animated:animated];
// Configure the view for the selected state
}
XIB的图片