iOS中自定义UITableViewCell的用法

1、先创建一个View继承 UITableViewCell并使用xib快速建立模型。

#import <UIKit/UIKit.h>
#import "Score.h"

@interface ShowScoreCell : UITableViewCell
//在.h文件中声明对象
@property(nonatomic,strong)Score *score;
@end

2、把需要的控件拖上xib并调整xib的大小

3、把对应控件连线至.m文件中

#import "ShowScoreCell.h"

@interface ShowScoreCell()

//以下属性都有连线 @property (weak, nonatomic) IBOutlet UILabel
*nameLabel; @property (weak, nonatomic) IBOutlet UILabel *positionLabel; @property (weak, nonatomic) IBOutlet UILabel *paperLabel; @property (weak, nonatomic) IBOutlet UILabel *scoreLabel; @property (weak, nonatomic) IBOutlet UIView *view; @end

 

4、在调用实体的set方法时,给面面中需要的控件赋值

- (void)setScore:(Score *)score{
    _score = score;
    self.nameLabel.text = score.name;
    self.positionLabel.text = score.position;
    self.paperLabel.text = score.paper;
    self.scoreLabel.text = score.score;
}

5、根据需要重写每个控件

//重写
-(void)layoutSubviews
{
    [super layoutSubviews];
    
    if (self.selected)
    {
        //可以单独设置每一个Label选中时的背景
//        self.nameLabel.backgroundColor = [UIColor redColor];
//        self.positionLabel.backgroundColor = [UIColor redColor];
//        self.paperLabel.backgroundColor = [UIColor redColor];
//        self.scoreLabel.backgroundColor = [UIColor lightGrayColor];
        //也可以直接设置用来放Label的View的背景
        self.view.backgroundColor = [UIColor redColor];
        
    }
    
    
}

6、在视图控制器中做以下工作

 1> 拿到实体对象的数据,一般用懒加载的形式存在数组中。

- (NSArray *)allScores{
    if (!_allScores) {
        _allScores = [[DBManager shareManager] allScore];
    }
    return _allScores;
}

 2>在viewDidLoad方法中注册自定义的Cell

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.navigationController setNavigationBarHidden:NO];
    self.navigationItem.title = @"查看成绩";
    //nibWithNibName:自定义Cell的名字
[self.tableView registerNib:[UINib nibWithNibName:@"ShowScoreCell" bundle:nil] forCellReuseIdentifier:cellIdentifier];
self.navigationItem.rightBarButtonItem
= [[UIBarButtonItem alloc]initWithTitle:@"编辑" style:UIBarButtonItemStyleDone target:self action:@selector(beginEditing:)];
}

 

提前声明一个cellIdentifier,在@implementation之前

static NSString *cellIdentifier = @"scoreCell";

  3>在返回每个单元格时使用自定义的Cell样式

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    ShowScoreCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
//    if (!cell) {
//        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
//    }
    //设计cell
    Score *s = self.allScores[indexPath.row];
    cell.score = s;
    
    
    return cell;
}

 

posted @ 2016-04-08 16:27  MokeyChan  阅读(476)  评论(0编辑  收藏  举报