UITableView(四)

钱朝明
2023-12-01

1.RootTableViewController.m

 1 #import "RootTableViewController.h"
 2 #import "FirstTableViewCell.h"
 3 #import "MyTableViewCell.h"
 4 #import "FirstModel.h"
 5 #import "MyModel.h"
 6 @interface RootTableViewController ()
 7 @property (nonatomic,strong) NSMutableArray *saveDataArray;
 8 @end
 9 
10 @implementation RootTableViewController
11 
12 - (void)viewDidLoad {
13     [super viewDidLoad];
14     //注册cell(注册cell的时候也是初始化cell)
15     //[self.tableView registerClass:[UITableView class] forCellReuseIdentifier:@"cell"];
16     [self.tableView registerClass:[FirstTableViewCell class] forCellReuseIdentifier:@"cell"];
17     //注册cell
18     [self.tableView registerClass:[MyTableViewCell class] forCellReuseIdentifier:@"MyTableViewCell"];
19     //隐藏分割线
20     self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
21     
22     //使用KVC赋值Model类
23     NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"firstImage",@"firstName",@"secondImage",@"secondName",@"thirdImage",@"thirdName" ,nil];
24     //初始化
25     self.saveDataArray = [[NSMutableArray alloc] init];
26    //创建一个Model类
27     FirstModel *firstModel = [[FirstModel alloc] init];
28     [firstModel setValuesForKeysWithDictionary:dic];
29     [self.saveDataArray addObject:firstModel];
30     
31     //使用KVC添加第二个model类
32     NSMutableDictionary *dicTwo = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"firstImage",@"picName",@"你们要加油哦",@"title",@"每天要多敲好多行代码",@"detail",@"4000",@"common", nil];
33     //创建一个Model类
34     MyModel *secondModel = [[MyModel alloc] init];
35     [secondModel setValuesForKeysWithDictionary:dicTwo];
36     [self.saveDataArray addObject:secondModel];
37     
38 }
39 
40 - (void)didReceiveMemoryWarning {
41     [super didReceiveMemoryWarning];
42     // Dispose of any resources that can be recreated.
43 }
44 
45 #pragma mark - Table view data source
46 
47 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
48 
49     return 1;
50 }
51 
52 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
53     return self.saveDataArray.count;
54 }
55 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
56 {
57     return 100;
58 }
59 
60 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
61     //从数组中取出model对象
62     id object = [self.saveDataArray objectAtIndex:indexPath.row];
63    // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
64         //需求:两行分别显示不同类型的cell,此时需要根据判断进行cell的设置
65     if (indexPath.row == 0) {
66         FirstTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
67         cell.textLabel.text = [NSString stringWithFormat:@"row:%ld",indexPath.row];
68         cell.model = object;
69         return cell;
70 
71     }else{
72         MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];
73         cell.model = object;
74         return cell;
75     }
76     
77 
78     
79 }

2.FirstTableViewCell.h

 1 #import <UIKit/UIKit.h>
 2 @class FirstModel;
 3 //自定义第一种cell
 4 @interface FirstTableViewCell : UITableViewCell
 5 @property(nonatomic,strong) UIImageView *firstImageView;
 6 @property(nonatomic,strong) UIImageView *secondImageView;
 7 @property(nonatomic,strong) UIImageView *thirdImageView;
 8 //设置数据model
 9 @property(nonatomic,strong) FirstModel *model;
10 @end

3.FirstTableViewCell.m

 1 #import "FirstTableViewCell.h"
 2 #import "FirstModel.h"
 3 @implementation FirstTableViewCell
 4 
 5 - (void)awakeFromNib {
 6     // Initialization code
 7 }
 8 -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
 9 {
10     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
11     if (self) {
12         //添加相应的控件
13         self.firstImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
14         [self.contentView addSubview:self.firstImageView];
15         
16         self.secondImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
17         [self.contentView addSubview:self.secondImageView];
18         
19         self.thirdImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
20         [self.contentView addSubview:self.thirdImageView];
21     }
22     return self;
23 }
24 //设置控件相对应的frame
25 -(void)layoutSubviews
26 {
27     self.firstImageView.frame = CGRectMake(10, 20, 60, 60);
28     self.firstImageView.image = [UIImage imageNamed:self.model.firstName];
29     self.secondImageView.frame = CGRectMake(80, 20, 60, 60);
30     self.secondImageView.image = [UIImage imageNamed:self.model.secondName];
31     self.thirdImageView.frame = CGRectMake(150, 20, 60, 60);
32     self.thirdImageView.image = [UIImage imageNamed:self.model.thirdName];
33 }
34 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
35     [super setSelected:selected animated:animated];
36 
37     // Configure the view for the selected state
38 }
39 
40 @end

4.FirstModel.h

1 #import <Foundation/Foundation.h>
2 
3 @interface FirstModel : NSObject
4 @property (nonatomic,strong) NSString *firstName;
5 @property (nonatomic,strong) NSString *secondName;
6 @property (nonatomic,strong) NSString *thirdName;
7 @end

5.firstmodel.m

1 #import "FirstModel.h"
2 
3 @implementation FirstModel
4 //复习KVC的相关内容,这个方式是防止找不到与之对应的key的时候造成程序crash掉
5 -(void)setValue:(id)value forUndefinedKey:(NSString *)key
6 {
7     
8 }
9 @end

6.MyTableViewCell.h

1 #import <UIKit/UIKit.h>
2 @class MyModel;
3 @interface MyTableViewCell : UITableViewCell
4 @property (nonatomic,strong) UIImageView *showImageView;
5 @property (nonatomic,strong) UILabel *titleLable;
6 @property (nonatomic,strong) UILabel *detailLable;
7 @property (nonatomic,strong) UILabel *responceLable;
8 @property (nonatomic,strong) MyModel *model;
9 @end

7.MyTableViewCell.m

 1 #import "MyTableViewCell.h"
 2 #import "MyModel.h"
 3 @implementation MyTableViewCell
 4 
 5 - (void)awakeFromNib {
 6     // Initialization code
 7 }
 8 -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
 9 {
10     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
11     if (self) {
12         self.showImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
13        [self.contentView addSubview:self.showImageView];
14         
15         
16         self.titleLable = [[UILabel alloc] initWithFrame:CGRectZero];
17        [self.contentView addSubview:self.titleLable];
18         
19         
20         self.detailLable = [[UILabel alloc] initWithFrame:CGRectZero];
21        [self.contentView addSubview:self.detailLable];
22         
23         self.responceLable = [[UILabel alloc] initWithFrame:CGRectZero];
24        [self.contentView addSubview:self.responceLable];
25         
26         
27     }
28     return self;
29 }
30 -(void)layoutSubviews
31 {
32     self.showImageView.frame = CGRectMake(10, 20, 60, 60);
33      //self.showImageView.image = [UIImage imageNamed:@"firstImage"];
34     
35     
36     self.titleLable.frame = CGRectMake(self.showImageView.bounds.origin.x + self.showImageView.bounds.size.width + 10  ,20, self.contentView.bounds.size.width - self.showImageView.bounds.size.width - 20, 30);
37     self.titleLable.backgroundColor = [UIColor cyanColor];
38     [self.titleLable setFont:[UIFont systemFontOfSize:14]];
39     
40     
41     self.detailLable.frame = CGRectMake(self.titleLable.frame.origin.x, self.titleLable.frame.origin.y + self.titleLable.frame.size.height + 5, self.titleLable.frame.size.width, 40);
42     self.detailLable.backgroundColor = [UIColor redColor];
43     self.detailLable.font = [UIFont systemFontOfSize:14];
44     
45     
46     self.responceLable.frame = CGRectMake(self.contentView.bounds.size.width - 80, 100, 40, 20);
47     self.responceLable.font = [UIFont systemFontOfSize:12];
48     self.responceLable.backgroundColor = [UIColor redColor];
49     
50     self.showImageView.image = [UIImage imageNamed:self.model.picName];
51     self.titleLable.text = self.model.title;
52     self.detailLable.text = self.model.detail;
53     self.responceLable.text = self.model.common;
54 }
55 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
56     [super setSelected:selected animated:animated];
57 
58     // Configure the view for the selected state
59 }
60 
61 @end

8.MyModel.h

1 #import <Foundation/Foundation.h>
2 
3 @interface MyModel : NSObject
4 @property(nonatomic,strong)NSString *picName;
5 @property(nonatomic,strong) NSString *title;
6 @property (nonatomic,strong) NSString *detail;
7 @property (nonatomic,strong) NSString *common;
8 @end

 

转载于:https://www.cnblogs.com/DevinSMR/p/5236261.html

 类似资料: