Sian 发表于 2014-4-9 21:05:52

用xib创建TableViewCell,熟悉MVC模型

1、效果展示



2、设计说明

2.0 准备相关展示数据,编写成plist文件
2.1 删除之前的控制器,新建一个类SATableViewController,继承UITableViewController;(MVC中的Contrller)
2.2 创建一个xib,设计一个UITableViewCell的基本样式;

2.3 创建一个类SACarCell,该类用来加载xib,并给xib中各控件赋值;(MVC中的View)
2.4 创建一个类SACar,该类用来创建数据模型;(MVC中的Model)
2.5 控制器操作:2.5.1 通过数组加载plist文件中的数据,再用模型将数据格式化;
2.5.2 实现DataSource协议的两个方法:表格行数,表格Cell内容
2.6 模型操作:
2.6.1 创建数据的各个属性;
2.6.2 实现一个类方法,将plist文件中的数据转换成模型数据;
2.7 视图操作:
2.7.1 类方法加载xib文件中的基本视图
2.7.2 xib中的各个view抽象成属性
2.7.3 将模型抽象成视图的一条属性
2.7.4 重写模型属性的set方法,让视图结合模型将数据自动展示;

3、关键代码
3.1 SACar.h
//
//SACar.h
//XibCell
//
//Created by yusian on 14-4-9.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import <Foundation/Foundation.h>
@interface SACar : NSObject

@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *source;
@property (nonatomic, copy) NSString *price;

- (id)initWithDict:(NSDictionary *)dict;
+ (id)carWithDict:(NSDictionary *)dict;

@end

3.2 SACar.m
//
//SACar.m
//XibCell
//
//Created by yusian on 14-4-9.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "SACar.h"

@implementation SACar
- (id)initWithDict:(NSDictionary *)dict
{
    if (self = ) {
      self.icon = dict[@"Icon"];
      self.title = dict[@"Title"];
      self.source = dict[@"Source"];
      self.price = dict[@"Price"];
    }
    return self;
}

+ (id)carWithDict:(NSDictionary *)dict
{
    return [ initWithDict:dict];
}
@end

3.3 SACarCell.h
//
//SACarCell.h
//XibCell
//
//Created by yusian on 14-4-9.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import <UIKit/UIKit.h>
@class SACar;

@interface SACarCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *titleLable;
@property (nonatomic, weak) IBOutlet UILabel *priceLable;
@property (nonatomic, weak) IBOutlet UILabel *sourceLable;
@property (nonatomic, weak) IBOutlet UIImageView *iconView;

@property (nonatomic, strong) SACar *car;

+ (id)carCell;

+ (NSString *)ID;

@end

3.4 SACarCell.m
//
//SACarCell.m
//XibCell
//
//Created by yusian on 14-4-9.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "SACarCell.h"
#import "SACAr.h"

@implementation SACarCell

+ (id)carCell
{
    return [ loadNibNamed:@"Cell" owner:nil options:nil];
//    UINib *nib = ;
//    return ;
}

- (void)setCar:(SACar *)car
{
    _car = car;
    _iconView.image = ;
    _priceLable.text = car.price;
    _sourceLable.text = ;
    _titleLable.text = car.title;
}

+ (NSString *)ID;
{   
    return @"ID";
}

@end

3.5 SATableViewController.h
//
//SATableViewController.h
//XibCell
//
//Created by yusian on 14-4-4.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "SACar.h"
#import "SACarCell.h"

@interface SATableViewController : UITableViewController

@end

3.6 SATableViewController.m
//
//SATableViewController.m
//XibCell
//
//Created by yusian on 14-4-4.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "SATableViewController.h"

@interface SATableViewController ()
{
    NSMutableArray *_cars;
}

@end

@implementation SATableViewController

#pragma mark - View加载后调用
- (void)viewDidLoad
{
    ;
   
    self.tableView.rowHeight = 80;// 如果每行固定高度可用该属性设置cell高度
   
    NSArray *array = pathForResource:@"Data.plist" ofType:nil]];    // 将plist文件数据加载到数组
   
    _cars = ; // 初始化用来存储模型数据的数组
   
    for (NSDictionary *dict in array) {
      ];
    }   // 将模型数据加载到数组当中
   
}

#pragma mark - Table view data source

// 返回表格行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return ;   // 数组长度即为表格行数
}

// 返回表格各行中内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 回收标记的cell,遵循封装的原则,将ID写进视图的类方法来实现
    SACarCell *cell = ];
   
    if (nil == cell) {
      cell = ;   // 调用视图的类方法创建一个cell
    }
   
    cell.car = _cars;    // 将cell对应的模型取出展示到视图中
   
    return cell;
}

@end

4、源代码下载:
**** Hidden Message *****



页: [1]
查看完整版本: 用xib创建TableViewCell,熟悉MVC模型