在iOS开发中,对于UITableViewCell自带的属性可能满足不了实际需求,所以需要自定义Cell。
Demo地址:https://github.com/gujinyue1010/iOS_UITableView
1.
2.ViewController.m
#import "ViewController.h"
#import "JYTableViewCell.h"
#import "JYModel.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
//显示的数据源(实际项目中可能就是从服务器解析过来的数据放在模型数组里)
@property(nonatomic,strong)NSMutableArray *dataArray;
@end
@implementation ViewController
//懒加载
-(NSMutableArray *)dataArray
{
if(!_dataArray)
{
_dataArray=[[NSMutableArray alloc]init];
JYModel *model1=[[JYModel alloc]initWithIndex:1 andImageName:@"111" andDesc:@"小悦悦1"];
JYModel *model2=[[JYModel alloc]initWithIndex:2 andImageName:@"111" andDesc:@"小悦悦2"];
JYModel *model3=[[JYModel alloc]initWithIndex:3 andImageName:@"111" andDesc:@"小悦悦3"];
//数组存放的是模型
[_dataArray addObject:model1];
[_dataArray addObject:model2];
[_dataArray addObject:model3];
}
return _dataArray;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//创建一个UITableView
UITableView *tableView=[[UITableView alloc]init];
tableView.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
//设置代理方法
tableView.delegate=self;
//设置数据源
tableView.dataSource=self;
[self.view addSubview:tableView];
//如果不想要系统自带的下划线
//self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
//tableView不显示没内容的cell
tableView.tableFooterView=[[uiview alloc]init];
}
//有几个部分
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
//每一部分有几条数据
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.dataArray.count;
}
//每一数据的具体显示
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellId=@"cellId";
static BOOL isRegnib=NO;
NSLog(@"看看isRegnib %d",isRegnib);
if(!isRegnib)
{
//注册自定义的Cell,设置标志
[tableView registerNib:[UINib nibWithNibName:@"JYTableViewCell" bundle:nil] forCellReuseIdentifier:cellId];
isRegnib=YES;
}
JYTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellId];
JYModel *model=self.dataArray[indexPath.row];
cell.index.text=[NSString stringWithFormat:@"%d",model.index];
cell.imageView1.image=[UIImage imageNamed:model.imageName];
cell.desc.text=model.desc;
//如果想要系统自带的箭头
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
设置每一行cell的高度
//-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//{
// return 60;
//}
//每一行点击事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"====%ld",indexPath.row);
}
//设置header文字
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return @"生活";
}
JYTableView.h:
#import <UIKit/UIKit.h>
@interface JYTableViewCell : UITableViewCell
//cell索引
@property (weak, nonatomic) IBOutlet UILabel *index;
//图片(不要取名imageView,会有警告的)
@property (weak, nonatomic) IBOutlet UIImageView *imageView1;
//描述
@property (weak, nonatomic) IBOutlet UILabel *desc;
@end
4.
5.JYModel.h
#import <Foundation/Foundation.h>
@interface JYModel : NSObject
@property(nonatomic,assign)int index;
@property(nonatomic,copy)NSString *imageName;
@property(nonatomic,copy)NSString *desc;
-(instancetype)initWithIndex:(int)index andImageName:(NSString *)imageName andDesc:(NSString *)desc;
@end
JYModel.m
#import "JYModel.h"
@implementation JYModel
-(instancetype)initWithIndex:(int)index andImageName:(NSString *)imageName andDesc:(NSString *)desc
{
self=[super self];
if(self)
{
_index=index;
_imageName=imageName;
_desc=desc;
}
return self;
}
@end