UI09_重写Cell


    // 读出plist文件内容
    NSString *path = [[NSBundle mainBundle] pathForResource:
                                      @"Student" ofType:@"plist"];
    NSMutableDictionary *dic = [NSMutableDictionary 
                    dictionaryWithContentsOfFile:path];
    NSLog(@"%@", dic);


  //  除去cell之间的横线
  tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
  • Cell 的重写

    • 首先写两个继承于UITableViewCell的类 : MyCell SecondMyCell

MyCell.h 文件

#import <UIKit/UIKit.h>

@interface MyCell : UITableViewCell

#warning 现在要给自定义的cell加上4条属性, 而且需要在外部进行赋值, 所以在.h里写属性的声明, 而且这四个属性, 他们的名不能和系统已有的属性名重复, 包括imageView, taextLabel, detailTextLabel

@property(nonatomic, retain)UIImageView *leftImageView;
@property(nonatomic, retain)UILabel *upLabel;
@property(nonatomic, retain)UILabel *downLabel;
@property(nonatomic, retain)UIImageView *rightImageView;

@end

MyCell.m 文件

#import "MyCell.h"

#define WIDTH self.contentView.frame.size.width
#define HEIGHT self.contentView.frame.size.height
@implementation MyCell


#pragma  mark 重写cell的初始化方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        //  完成对属性视图的创建, 但是一般创建之后不给属性视图frame

        [self createView];

    }
    return  self;
}

#pragma mark 属性视图进行创建

- (void)createView{
//  创建左imageVie
    self.leftImageView = [[UIImageView alloc]init];
    self.leftImageView.backgroundColor = [UIColor greenColor];
    //  添加
    //  cell上有一个专门用来显示控件的视图, 叫做contentView, 我们把视图就放到contentView上进行显示
    [self.contentView addSubview:self.leftImageView];
    [_leftImageView release];


//  创建upLabel
    self.upLabel = [[UILabel alloc]init];
    self.upLabel.backgroundColor = [UIColor grayColor];
    [self.contentView addSubview:self.upLabel];
    [_upLabel release];

//  创建downLabel
    self.downLabel = [[UILabel alloc]init];
    self.downLabel. backgroundColor = [UIColor orangeColor];
    [self.contentView addSubview:self.downLabel];
    [_downLabel release];

//  创建右imageView
    self.rightImageView = [[UIImageView alloc]init];
    self.rightImageView.backgroundColor = [UIColor purpleColor];
    [self.contentView addSubview:self.rightImageView];
    [_rightImageView release];

}


//  pragma mark 这个方法是cell显示之前走的最后的一个方法, 一般会在这个方法里设置所有的属性视图的大小和尺寸, 这个方法会用在图片文字的自适应的设置上
- (void)layoutSubviews{
//  重写了父类的layoutSubviews方法, 如果想要这个方法发挥正常功能, 别忘了[super layoutSubviews]
    [super layoutSubviews];
//  对所有属性视图的位置和大小进行设置
    self.leftImageView.frame = CGRectMake(0, 0, WIDTH / 3, HEIGHT);
    self.upLabel.frame = CGRectMake(WIDTH / 3, 0, WIDTH / 3, HEIGHT / 2);
    self.downLabel.frame = CGRectMake(WIDTH / 3, HEIGHT / 2, WIDTH / 3, HEIGHT / 2);
    self.rightImageView.frame = CGRectMake(WIDTH / 3 * 2, 0, WIDTH / 3, HEIGHT);
}

- (void)dealloc
{
    [_leftImageView release];
    [_upLabel release];
    [_downLabel release];
    [_rightImageView release];
    [super dealloc];
}

- (void)awakeFromNib {
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

SecondMyCell. h 文件

#import <UIKit/UIKit.h>

@interface SecondMyCell : UITableViewCell
@property(nonatomic, retain)UIImageView *leftImageView;
@property(nonatomic, retain)UIImageView *centerImageView;
@property(nonatomic, retain)UIImageView *rightImageView;
@property(nonatomic, retain)UILabel *leftLabel;
@property(nonatomic, retain)UILabel *rightLabel;
@end

SecondMyCell.m 文件

#import "SecondMyCell.h"
#define WIDTH self.contentView.frame.size.width
#define HEIGHT self.contentView.frame.size.height
@implementation SecondMyCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style
            reuseIdentifier:reuseIdentifier];
    if (self) {
        [self createView];
    }
    return  self;

}

- (void)createView{

    self.leftImageView = [[UIImageView alloc]init];
    self.leftImageView.backgroundColor = [UIColor redColor];
    [self.contentView addSubview:self.leftImageView];
    [_leftImageView release];

    self.centerImageView = [[UIImageView alloc]init];
    self.centerImageView.backgroundColor = [UIColor grayColor];
    [self.contentView addSubview:self.centerImageView];
    [_centerImageView release];

    self.rightImageView = [[UIImageView alloc]init];
    self.rightImageView.backgroundColor = [UIColor orangeColor];
    [self.contentView addSubview:self.rightImageView];
    [_rightImageView release];


    self.leftLabel = [[UILabel alloc]init];
    self.leftLabel.backgroundColor = [UIColor cyanColor];
    [self.contentView addSubview:self.leftLabel];
    [_leftImageView release];

    self.rightLabel = [[UILabel alloc]init];
    self.rightLabel.backgroundColor = [UIColor purpleColor];
    [self.contentView addSubview:self.rightLabel];
    [_rightLabel release];
}

- (void)dealloc
{
    [_leftImageView release];
    [_centerImageView release];
    [_rightImageView release];
    [_leftLabel release];
    [_rightLabel release];
    [super dealloc];
}

- (void) layoutSubviews{
[super layoutSubviews];  //   注意不要忘记

    self.leftImageView.frame = CGRectMake(0, 0, WIDTH / 3, HEIGHT / 2);
    self.centerImageView.frame = CGRectMake(WIDTH / 3, 0, WIDTH / 3, HEIGHT / 2);
    self.rightImageView.frame = CGRectMake(WIDTH / 3 * 2, 0, WIDTH / 3, HEIGHT/ 2);

    self.leftLabel.frame = CGRectMake(0, HEIGHT / 2, WIDTH / 2  , HEIGHT / 2);
    self.rightLabel.frame = CGRectMake(WIDTH /  2, HEIGHT / 2, WIDTH / 2 , HEIGHT / 2);

}




- (void)awakeFromNib {
    // Initialization code
}




- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

根据奇偶的不同, 将重写的两个cell显示出来

MainViewController.m 文件

#import "MainViewController.h"
#import "MyCell.h"
#import "SecondMyCell.h"
#import "Student.h"
@interface MainViewController ()<UITableViewDataSource, UITableViewDelegate>
@property(nonatomic, retain)NSMutableArray *arr;
@property(nonatomic, retain)UITableView *tableView;
@end

@implementation MainViewController

- (void)dealloc
{
    [_arr release];
    [_tableView release];
    [super dealloc];
}

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.arr = [NSMutableArray arrayWithObjects:@"宋江1", @"卢俊义2", @"吴用3", @"公孙胜4", @"关胜5", @"林冲6", @"秦明7" ,@"呼延灼8" , @"花容9",@"柴进10", @"李应11", @"朱仝12",@"鲁智深13",@"武松14",nil];

        [self createData];
    }
    return self;

}

- (void)createData{
    NSString *path = [[NSBundle mainBundle]pathForResource:@"StudentArr" ofType:@"plist"];
    NSArray *stuArr = [NSArray arrayWithContentsOfFile:path];
    NSDictionary *dic = stuArr[0];
    //NSLog(@"%@", dic[@"name"]);
    //  通过KVC对model进行赋值
    Student *stu = [[Student alloc]init];
    [stu setValuesForKeysWithDictionary:dic];
    NSLog(@"%@", stu.name);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.



    self.navigationController.navigationBar.translucent = NO;
    self.view.backgroundColor = [UIColor orangeColor];
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
    [self.view addSubview:self.tableView];
    [_tableView release];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    self.tableView.rowHeight = 150;





}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return  self.arr.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    if (indexPath.row % 2 == 1) {
        static NSString *reuse = @"reuse";
        MyCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
        if (!cell) {
            cell = [[[MyCell alloc]initWithStyle: UITableViewCellStyleDefault reuseIdentifier:reuse] autorelease];
        }
        cell.upLabel.text = self.arr[indexPath.row];
        cell.leftImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", indexPath.row + 1]];
        cell.rightImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", indexPath.row + 1]];
        return  cell;
    }else{
        static NSString *reuse = @"secondReuse";
        SecondMyCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
        if (!cell) {
            cell = [[[SecondMyCell alloc]initWithStyle: UITableViewCellStyleDefault reuseIdentifier:reuse] autorelease];
        }
        cell.leftLabel.text = self.arr[indexPath.row];
        return  cell;
    }




}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}



@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值