zoukankan      html  css  js  c++  java
  • UITableView(四)

    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
  • 相关阅读:
    移动端 app
    python 3.8 新特性
    vue 路由歪招
    VUE 关于组件依赖的问题
    vue 全局注册组件
    CSS小技巧
    vue踩坑记 页面跳转不新
    vuecli eslint 语法错误解决办法
    vue v-slot用法测试
    终止 IdFtp下载
  • 原文地址:https://www.cnblogs.com/DevinSMR/p/5236261.html
Copyright © 2011-2022 走看看